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 :

Problème avec les vector


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 20
    Points
    20
    Par défaut Problème avec les vector
    Bonjour,

    Je dois utiliser une liste chainée pour une application que je développe, et aprés analyse des besoins, j'en ai conclu que le vector est la solution à utiliser.

    Voici mon code :

    Une structure S_ELEMENT
    struct S_ELEMENT
    {
    //std::string Name;
    //std::string Features;
    char* Test;
    };
    Un bouton pour ajouter un élement à la liste
    S_ELEMENT Elem;
    AnsiString Test;
    Test = Edit1->Text;
    Elem.Test = Tes.c_str();
    Ya.push_back(Elem);
    Un bouton pour afficher ma liste
    S_ELEMENT BuffElem;
    for ( size_t i = 0, size = Ya.size(); i < size; ++i )
    {
    // attention : utilisation de l'opérateur []
    // les accès ne sont pas vérifiés, on peut déborder !

    memcpy((S_ELEMENT*)&BuffElem, (S_ELEMENT*)&Ya[i], sizeof(S_ELEMENT));
    //BuffElem = Ya[i] ;
    ListBox5->Items->Add(BuffElem.Test);
    }
    Bon alors le problème, c'est que les lettres sont restituées sans souci aucun, alors que les chiffres, ben ils disparaissent comme par enchantement

    Si quelqu'un a une idée ...

    Merci d'avance!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Bon ... apparamment les char* ne font pas bon ménage avec le C++ (vector etc...) .

    En remplacant le char* par un AnsiString l'opération marche ma foi plutot bien!

    (Dois je supprimer le message ou le laisser en Résolu au cas ou un autre utilisateur rencontre ce souci?).

  3. #3
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    hum..délestage devrait suffire

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    C'est normal. Tu affectes l'adresse retournée par c_str() à ton pointeur. Or, d'une part cette adresse n'est valable que temporairement (cf doc). D'autre part, ton AnsiString est une variable locale. Renvoyer c_str() (même si l'adresse était valable en permanence) en dehors de ta fonction est donc une erreur.
    Si tu remplaces le pointeur par une AnsiString, tu recopies la chaîne de caractères dans ta structure donc cela fonctionne.

Discussions similaires

  1. Problème avec les vector
    Par Kajan dans le forum Débuter
    Réponses: 11
    Dernier message: 03/07/2011, 23h21
  2. Problème avec les vector
    Par terminator59140 dans le forum C++
    Réponses: 8
    Dernier message: 03/06/2009, 23h21
  3. problème avec les vector
    Par cdm1024 dans le forum SL & STL
    Réponses: 8
    Dernier message: 15/04/2008, 10h57
  4. [Debutant] problème avec les vectors
    Par julien.63 dans le forum Langage
    Réponses: 6
    Dernier message: 21/12/2007, 22h53
  5. [gsoap] Problème avec les std::vector
    Par LePhasme dans le forum SL & STL
    Réponses: 1
    Dernier message: 25/04/2006, 11h46

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