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 AnsiString tableau pour c++ builder [Débutant]


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut problème AnsiString tableau pour c++ builder
    Bonjour, j'ai un gros problème assez urgent parce que j'en ai marre de trainer là dessus :


    Je souhaiterais créer un tableau d'AnsiString pour mettre par exemple "bonjour" dedant et je souhaiterais ensuite l'afficher dans une listbox


    voilà grosso modo ce que je pense mettre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    AnsiString chaine[10];
    chaine[0]="bonjour";
     
    //mettre dans la listbox à la suite des autres choses déjà mises...
    ListBox1->Items->Add(chaine[0]);
    ça marche pas
    quelqu'un peut m'aider ?
    merci

    Je précise que la compilation marche mais rien ne s'affiche dans la listbox.

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pour manipuler des liste de chaine de caractère, je te conseille d'utiliser TStringList qui est justement fait pour ça (plutôt qu'un tableau de chaine):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TStringList *strList = new TStringList();
    strList->Add( "Chaine0");
    strList->Add( "Chaine1");
    strList->Add( "Chaine2");
     
    //pour ajouter à ta ListBox:
    ListBox1->Items->Add( strList->Strings[1] ) ; //ajoute 'Chaine1'
     
    delete strList; // libération de la mémoire allouée
    Mais pour info, ton code fonctionne parfaitement (aussi bien à la compilation qu'a l'exécution), ton problème vient donc d'ailleurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      AnsiString chaine[10];
      chaine[0] = "bonjour";
      ListBox1->Items->Add( chaine[0] );     
    }
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Merci pour ta réponse,

    En fait j'ai mi mon code dans un autre projet c++builder avec simplement une listbox et un boutton et ça marche (le tien comme le mien)
    Je sais pas pourquoi mais il veut pas l'afficher dans mon projet déjà existant... je comprends pas
    Si je t'envoies mon projet par mail tu aurais le temps de jeter un coup d'oeil ? ça me serait grandement utile parce que là je vois pas...

    Sinon tu peux m'expliquer pourquoi avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TStringList *strList = new TStringList();
    strList->Add( "Chaine0");
    strList->Add( "Chaine1");
    strList->Add( "Chaine2");
     
    //pour ajouter à ta ListBox:
    ListBox1->Items->Add( strList->Strings[1] ) ; //ajoute 'Chaine1'
     
    delete strList; // libération de la mémoire allouée
    c'est mieux que ma façon?

    thanks a lot mate !

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Citation Envoyé par dekalima Voir le message
    Si je t'envoies mon projet par mail tu aurais le temps de jeter un coup d'oeil ? ça me serait grandement utile parce que là je vois pas...
    Poste le bout de code complet qui pose problème ici.

    Citation Envoyé par dekalima Voir le message
    Sinon tu peux m'expliquer pourquoi avec [...] c'est mieux que ma façon?
    !
    Les deux méthodes fonctionnent, il n'y en a pas l'une "mieux" que l'autre. C'est juste que la VCL propose un objet pour manipuler les chaines de caractères (TStringList) donc à titre personnel je préfère l'utiliser puisque je trouve beaucoup plus souple et pratique. Mais à chacun sa méthode.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    En fait c'est bon, je me suis débrouillé tout seul... en tout cas je te remercie pour le moment j'ai pas d'autres questions... je reviendrais vers toi si besoin est.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    En fait si , j'ai une autre question, comment on fait pour vider la liste "strList" (sans la détruire)

  7. #7
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    et aussi une autre question:

    Quand je fais ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    ListBox1->Clear();//vide la list box
    strList->Clear(); // vide la strList ( merci à pottiez )
    }
    il ne reconnait pas strList car on est plus dans la même fonction je pense, il me met cetter erreur :

    [C++ Erreur] Unit1.cpp(183): E2451 Symbole 'strList' non défini


    Ya un truc à mettre dans le .h pour éviter ce problème? je me rappelle plus...
    Merci d'avance

  9. #9
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Oui, tu doit mettre dans le .h :et du coup dans la methode de départ tu doit remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TStringList *strList = new TStringList();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strList = new TStringList();
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Thanks, j'essaye ça

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Bon dans la série des questions, je continue ,j'en ai une autre

    dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    strList = new TStringList();
    strList->Add( "Récapitulatif de commande:");
    strList->Add( ""); // ligne vide
    strList->Add( ""); // ligne vide
    qui est dans la fonction void __fastcall TForm1::Button1Click(TObject *Sender) , j'ai donc ces 3 lignes qui s'affichent dans la ListBox1 quand j'appuie sur un bouton.

    Ce que je voudrais à partir d'une autre liste créee par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strList2 = new TStringList();
    Je voudrais aller en 4ème ligne ( juste après les 2 lignes vides de la première liste ) ... vous voyez ?

    Possibilité de faire un truc du genre : ?

  12. #12
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Attention il ne faut pas confondre les divers instances de TStrings, ici ton strList2 ne contient rien et certainement pas les 3 première ligne de strList, vu que tu les à ajouté dans strList et pas dans strList2.
    De plus il faut ajouter un texte par la méthode Add et non par l'opérateur [] (celui-ci est utilisable pour modifier ou lire la ligne mais pas pour la créer )
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    J'ai mi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strList2 = new TStringList();
    strList2->Add("blablabla");
    Listbox1->Items->Add (strList2->Strings[0]);
    et meme pour l'indice 0, ça lui plait pas il met une erreur

    [C++ Erreur] Unit1.cpp(170): E2451 Symbole 'Listbox1' non défini


    qu'est ce que la listbox à avoir là dedant c'est bizarre ?

  14. #14
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Tu as du renommer ta ListBox, ou alors tu n'est pas dans le .cpp de la fenêtre ou encore dernière solution, tu as supprimer ta ListBox
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    Ouais je sais pas ya des trucs mystiques en informatique, maintenant ça marche

    Bon alors ça marche là et il a bien mi le "golio" après les deux lignes vides de srtList....


    Je pensais qu'il allait me mettre le golio sur la première ligne... ( qu'il allait fusionner les deux textes des indices 0 des deux listes )
    bref
    bizarre quand même
    Merci en tout cas



    Off-topic
    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .
    L'aide de C++Builder ne marche pas sous Seven j'ai remarqué ... arf

  16. #16
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Citation Envoyé par dekalima Voir le message
    Ouais je sais pas ya des trucs mystiques en informatique, maintenant ça marche

    Bon alors ça marche là et il a bien mi le "golio" après les deux lignes vides de srtList....


    Je pensais qu'il allait me mettre le golio sur la première ligne... ( qu'il allait fusionner les deux textes des indices 0 des deux listes )
    bref
    bizarre quand même
    Merci en tout cas
    Ça na rien de bizarre, lorsque tu ajoute un texte il se met à la suite, c'est comme lorsque tu prépare des brochette,lorsque tu enfile un nouveau morceau de viande sur ta pique, il se met à la suite, il ne fusionne pas avec le premier



    Citation Envoyé par dekalima Voir le message
    Off-topic

    L'aide de C++Builder ne marche pas sous Seven j'ai remarqué ... arf
    Consulte ce lien : http://www.touslesdrivers.com/index....=3586&v_page=3
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut


    Petite question: voici une photo de ma listebox, quand on clique sur une ligne, elle se met en gras comme vous le voyez. J'aimerais que l'on puisse les déplacer ( en mettre une au dessus de l'autre si on le souhaite par exemple ) et ce en gardant la souris enfoncée...
    Vous avez des idées sur la manière de procéder ?
    thanks a vous deux

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Points : 108
    Points
    108
    Par défaut
    En fait je pense pas que ça soit possible je vais faire autrement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/10/2009, 10h05
  2. Réponses: 2
    Dernier message: 07/02/2008, 10h28
  3. Problème de tableau pour un exercice en C++
    Par tigresses57 dans le forum C++
    Réponses: 14
    Dernier message: 05/03/2006, 23h27
  4. Réponses: 3
    Dernier message: 11/01/2006, 17h44
  5. Problème tableau pour une requête
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 20h21

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