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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    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 expérimenté
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    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 : 277
    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 confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    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 expérimenté
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    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 : 277
    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 confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

  6. #6
    Membre Expert
    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
    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

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