IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

structure - C++Builder 10.1 Berlin starter


Sujet :

C++Builder

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut structure - C++Builder 10.1 Berlin starter
    Bonjour,
    Mon code ci-dessous fonctionne à condition que mes variables soient déclarées avec AnsiString.
    Si je les déclare en tableau de caractères string prenom[30]; prenom[20] ... le compilateur fait deux messages d'erreur :
    Lvalue nécessaire
    E2085 Addition de pointeur incorrecte
    Si vous avez quelques réponses ...
    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    {
    // Structures page 188
    int i;
    i=0;
    struct enreg
    {
     AnsiString prenom;
     AnsiString nom;
     int numero;
     int qte;
     float prix;
    	};
     enreg art [10];
     art[i].prenom = "Charles";   // si déclaration String nom[30]; il y a une erreur. Pourquoi ?
     art[i].nom = "BAUDELAIRE";
     art[i].numero = 15;
     
    ListBox1->Clear();
    ListBox1->Items->Add(art[i].prenom + "  " + art[i].nom + "  " + IntToStr(art[i].numero));
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 273
    Points : 628
    Points
    628
    Par défaut
    Citation Envoyé par magdani Voir le message
    Bonjour,
    Mon code ci-dessous fonctionne à condition que mes variables soient déclarées avec AnsiString.
    Si je les déclare en tableau de caractères string prenom[30]; prenom[20]
    string prenom[30] est un tableau de chaines et non un tableau de caractères.
    char s[30]; est un tableau de caractères
    Sauf cas particuliers vous n'aurez d'ailleurs pas besoins de tableaux de caractères.
    Avec C++ Builder utilisez String au lieu de string ou de AnsiString.
    String est un alias de UnicodeString permettant d'utiliser le jeu de caractères étendu Unicode utilisé à tous les niveaux par Builder et Delphi.

    Pour le reste il faut vraiment apprendre les bases....
    Cela serait peut-être plus simple pour vous de commencer par Delphi.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut
    Je me suis planté en écrivant caractères. Je connais un peu Delphi et je suis parfois un peu déconcerté par C++. Je pense que je m’emmêle les crayons.
    Avec Delphi var nom : string[20]; // limite la chaîne nom à 20 caractères. Après, j'utilise MaxLength avec par exemple un TEditComment faire de même en C++ pour limiter une chaîne ? J'ai un bouquin (800 pages) pas mal mais pas moyen de trouver.
    Merci d'avance.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 273
    Points : 628
    Points
    628
    Par défaut
    En C++ il n'y aucun contrôle sur la taille d'un tableau de base. Quand vous déclarez :
    int tab[10];C'est à vous de vous "rappeler" qu'il ne faut pas dépasser 10 éléments : si vous allez au delà c'est la catastrophe !
    L'intérêt est d'avoir de meilleurs performances à l'exécution dans le cas d'applis très pointues comme la modélisation scientifique ou les jeux.
    Sinon il faut utiliser les tableaux de la bibliothèque standard par exp. :
    vector<String> clients;Ce type de tableau est géré dynamiquement : vous n'avez plus besoin de déclarer la taille qui va s'ajuster au fur et à mesure que vous le remplissez (par adjonction de blocs mémoires correspondant à plusieurs éléments) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    clients.push_back("Jean Dupont");
    int taille=clients.size();
    Je vous conseille malgré tout de bien approfondir Delphi avant de passer au C++

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut
    Merci pour votre réponse

  6. #6
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Je te conseille de suivre les différents tutoriels présents sur ce site et également ailleurs pour parfaire tes connsissances en C respectivement C++
    par exemple le type AnsiString n'est pas un tableau de caractère mais une Classe

    petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AnsiString monString;  // création d'un object monString de la Classe Ansistring
    monString.Add("premier élément");
    ...
    il existe passablement de méthodes de la classe AnsiString à utiliser
     
    pour travailler en Unicode il faut plutôt utiliser la classe UnicodeString


    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 130
    Points : 59
    Points
    59
    Par défaut
    0Merci pour les réponses. J'ai fait quelques applications Delphi et j'ai fait des confusions avec les string.

Discussions similaires

  1. Delphi 10.1 Berlin Starter Gratuit
    Par medkyl dans le forum EDI
    Réponses: 6
    Dernier message: 05/06/2019, 19h33
  2. Réponses: 69
    Dernier message: 05/04/2017, 13h48
  3. Réponses: 12
    Dernier message: 16/01/2017, 14h59
  4. Delphi et C++ Builder 10.1 Berlin Update 2 disponible
    Par Maxime Capellot dans le forum Actualités
    Réponses: 2
    Dernier message: 17/11/2016, 10h45
  5. structurer son projet borland c++ builder
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/09/2008, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo