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

 Delphi Discussion :

Comment remplir une TStringList ?


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut Comment remplir une TStringList ?
    Bon, alors encore un truc qui ne fonctionne pas comme il le faudrait...

    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
    21
    22
     
      AssignFile(FFile,Name);
      Reset(FFile);
      StList:=TStringList.Create;
      St:='';
      while not(Eof(FFile)) do
        begin
        BlockRead(FFile,t,1);
        while char(t)<>' ' do
          begin
          St:=St+char(t) ;
          BlockRead(FFile,t,1);
          end;
        BlockRead(FFile,t,1);
        while char(t)<>' ' do BlockRead(FFile,t,1);
        BlockRead(FFile,t,1);
        while char(t)<>' ' do BlockRead(FFile,t,1);
        StList.Append(St) ; <----
        end;
      ChargeBetons:=StList;
      CloseFile(FFile);
      StList.Free;
    le but du jeu c'est de remplir la TStringList nommée StList avec ce que je trouve dans un fichier... le fichier étant des bytes. Avec le débugeur, j'ai verifié que St n'était pas nulle. C'est le cas, St vaut systématiquement une chaine <> ''.
    On pourrait croire que j'invente du code! et ben non! http://www.delphibasics.co.uk/RTL.asp?Name=TStringList J'ai juste remplacé Add par la méthode Append ce qui revient au même à l'index près (dont je me fout!) mais je vous rassure ça ne marche pas non plus avec Add !!
    Voilà si quelqu'un a une idée de pourquoi le lieur estime qu'il n'est pas nécessaire de garder la methode Append... (c'est ce qu'il me dit quand je souhaite evaluer le .Append...)


    Je n'ose espérer qu'il va falloir que je me colle ça dans un fichier pour ensuite envoyer ça dans une TStringList passée par une méthode tordue à une procédure sortie de je sais pas où. POURTANT PAS COMPLIQUE DE REMPLIR UNE TSTRINGLIST M***E !!


    [edit]

    sinon y a mieux...
    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
     
      AssignFile(FFile,Name);
      Reset(FFile);
      SList:=TStringList.Create;
      while not(Eof(FFile)) do
        begin
        St:='';
        BlockRead(FFile,t,1);
        while char(t)<>' ' do
          begin
          St:=St+char(t) ;
          BlockRead(FFile,t,1);
          end;
        BlockRead(FFile,t,1);
        while char(t)<>' ' do BlockRead(FFile,t,1);
        BlockRead(FFile,t,1);
        while char(t)<>' ' do BlockRead(FFile,t,1);
        SList.Add(St);
        end;
    avec ce code (extrait du cours de didier maillet! ) et bien on obtient royalement une chaine vide! sinon ca va! pas gonflant de passer une soirée sur un code qui fonctionne chez les autres !!!

    [edit]

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    J'ai juste remplacé Add par la méthode Append ce qui revient au même à l'index près (dont je me fout!)
    Deja pour ca j'ai un doute affreux
    Citation Envoyé par Aide Delphi
    Append
    Prépare un fichier existant pour l'ajout de texte.

    Add
    Ajoute une nouvelle chaîne à la liste.
    Ensuite je n'est pas le temps de regarder le code plus en avant mais bon tu dois certainement faire une erreur quelquepart, je doute que ce site diffuse des code non fonctionnel.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Re
    Ca serait pas sa ton probelem plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ChargeBetons:=StList;
      CloseFile(FFile);
      StList.Free;
    met plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChargeBetons.Assign(StList);
    Par ce que tel que tu le fait tu dis que ChargeBeton EST StList.
    Et donc qd tu libert StList pour moi tu libert aussi ChargeBeton.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pourquoi ne pas charger directement le fichier dans la stringlist ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    StList:=TStringList.Create;
    try
    StList.loadFromFile(Name);
     
    // Fonction pour formatter la liste comme tu le souhaites
     
    ChargeBetons:=StList;
    finally
      StList.free;
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Bonjour a tous, et merci de vous interrésser au problème...
    Pour répondre:
    1- Charger tout le fichier, oui pourquoi pas mais je n'ai besoin que certaines infos un peu noyées dans la masse... donc en fait je n'extraits que certains morceau de file
    2- Effectivement, le coup du assign ça pourrait fonctionner. C'est surement déjà une bonne piste. Néanmoins, je tiens à signaler que le resultat est certe vide mais déjà avant le StList est vide. Donc je vais réctifier l'affectation finale mais si ce que j'affecte au resultat est vide, il y a normalement toutes les chances que le resultat soit vide... Ce qui me fait dire ça, c'est que le deuxième code que je pose sur le site, renvoie aussi une liste vide DANS le while (et tu noteras que j'utilise Add).

    Alors je penses que je ne doit pas utiliser les TStringList comme c'est prévu chez borland... Ok! Mais comment on fait alors?

    Sinon merci et pour ceux qui souhaitent se pencher sur le code... courage et merci.

  6. #6
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    @Qwazerty

    Tu n'as pas regarder le bon Append

    il existe aussi un append pour la tStringList

    Tiré de l'aide de delphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    La méthode Append est identique à la méthode Add,mais elle ne renvoie pas de valeur.Utilisez Append quand il n'est pas utile de connaître l'indice de la nouvelle chaîne ou avec un descendant de TStrings pour lequel l'indice renvoyé est dépourvu de sens.
    Ensuite pour répondre au sujet a tu vérifié que ta variable st n'était pas vide déja avant la tentative d'ajout dans ta StringList ?
    st est bien défini comme une String ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    salut,
    oui tout a fait. La variable string est effectivement une string non vide.
    Dans le cycle de développement c'est pas là que j'ai commencer... J'ai d'abord fait afficher des showmessage des "st" qui m'ont confirmé que ma string correspondait bien a ce que je voulais...
    Ensuite, je souhaitais le mettre dans une TStringList. Je verrais ensuite à envoyer le tout sous resultat d'une fonction... Pour l'instant, l'integration dans une TStringList ne se fait pas correctement...
    Voilà pour ça... Question suivante...
    Merci @+

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut Un peu plus..
    Bon après un test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        while char(t)<>' ' do BlockRead(FFile,t,1);
        SList.Add(St);
        end;
      ChargeBetons.Assign(SList);
      CloseFile(FFile);
      SList.Free;
    C'est génial! Ca marche pas parce que j'ai une "erreur violation ..." sur le .Assign Alors on met un .Create avant parce que peut-être ChargeBetons n'existe pas... et là magnificence ! "Erreur Violation ... " sur le .Create ! ChargeBetons étant une fonction qui retourne une TStringList on ne peut ni l'affecter ni la créer. Donc tout va bien dans le monde merveilleux des TStringList....
    Vu les resultats, je vais passer à l'ancienne avec un record qui a un champ string et un pointeur sur le suivant ... Ca au moins ça marche...
    Vive les Classes intégrées !!!!

    Ps: Je ne cloture pas parce que le code n'est pas fonctionnel. Je ne délaisse pas! Si qqun veut se pencher dessus sans aucune hésitation je lirais et j'essaierais.

    Merci @+

  9. #9
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Ecoute met le code complet que tu utilises, pourquoi vouloir mettre un .Create sur ChargeBetons si je fais pas d'erreur ChargeBetons est une listBox que tu as de posée sur ta form ? non ?

    [edit] Autre chose, pourquoi ne pas charger ton fichier dans la listbox, comme quelqu'un te la proposé plus haut, et faire les tri ensuite ?
    Est ce que ca serait pas plus simple [/Edit]

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    J'ai beau regarder ton code je comprend pas ce que tu veux faire!
    Tu appeles 50 fois BlockRead comme si tu voulais sauter des espaces??
    Tu veux retirer quoi de ton fichier ??
    Ecoute comme dis au dessus met le code complet avec les declarations des differentes variables.
    Met egalement la structure du fichier que tu veux mettre dans ton ListBox et explique un peu ce que tu cherches a faire, par ce que tu parles de faire un tri et de pas mettre tout ton fichier dans ta ListBox ... mais moi quand je regarde ton code je vois vraiment pas ou est ce que tu fait un tri.
    A++
    Qwaz

    [Edit]
    et si ChargeBetons c'est bien un ListBox comme je le pense je crois que c'est comme ca pour charger un TStringFile dedans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChargesBetons.items := StList
    [/Edit]

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Bon désolé, j'ai modifié tout le code avec des enregistrements chainés... j'y suis presque... Mais on va perséverer dans cette voie tout de même... c'était pas clair, je repose tout:

    Alors effectivement le but est d'avoir une TStringList "baladeuse" pour remplir plusieurs ComboBox et/ou ListBox (mais le problème peut être pris de façon plus générale ...)

    le fichier se présente ainsi : "nom integer integer " pour la forme de base. Celle -ci est répétée autant de fois que "d'éléments de base" sont à charger. Tout est séparé par 1 espace. Je souhaite mettre seulement les "nom" dans la TStringList donc il faut "enlever" les integer. Je ne souhaiterais pas recreer de fichier supplémentaire... et si possible eviter les Tmemo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Function ChargeBetons (rep : string; Name : String) : TStringList;
    rep étant le répertoire et Name le nom du fichier à charger.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SList : TStringList;
    St : String;
    t : integer;
    begin
      AssignFile(FFile,Name);
      Reset(FFile);
    On ouvre le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      SList:=TStringList.Create;
      while not(Eof(FFile)) do
        begin
        St:='';
        BlockRead(FFile,t,1);
        while char(t)<>' ' do
          begin
          St:=St+char(t) ;
          BlockRead(FFile,t,1);
          end;
    On charge le premier nom dans "St" donc jusqu'au premier espace ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        BlockRead(FFile,t,1);
        while char(t)<>' ' do BlockRead(FFile,t,1);
    On continue dans le fichier pour "sauter" le premier integer ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        BlockRead(FFile,t,1);
        while char(t)<>' ' do BlockRead(FFile,t,1);
    On continue encore dans le fichier pour "sauter" le deuxième integer ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        SList.Add(St);
        end;
    On ajoute seulement le nom à SList et on boucle jusqu'a la fin de fichier. Déjà, ici jamais SList ne sera différent de " () "... alors là Pourquoi !?! Toujours pas compris ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      ChargeBetons.Assign(SList);
      CloseFile(FFile);
      SList.Free;
    On COPIE SList dans ChargeBetons puis on ferme le fichier et on libere SList. Mais j'ai un message "Erreur violation adresse ..." sur le .Assign .Ce qui tendrait à dire qu'on accede à une adresse non allouée... J'ai modifié le code final par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      ChargeBetons.Create;
      ChargeBetons.Assign(SList);
      CloseFile(FFile);
      SList.Free;
    Même erreur mais cette fois sur .Create

    Bon désolé de n'avoir pas bien expliqué au début... Maintenant j'espère que c'est clair...
    Si qqun n'a pas compris je réexplique. Si qqun a compris qu'il essai de débrouiller ça... s'il veut bien...
    Merci à ceux qui voudrons bien se taper la tête contre le mur...

  12. #12
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    J'ai pas trop le temps ce matin, mais le assign dont je t'avais conseillé l'utilisation n'est pvalable que su la partie assigné est un composant identique a celui qui recoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TconboBox.assigne(Tcombobax);
    Donc dans ton cas comme je te le dis plus haut essaye
    TComboBox.items := TStringList;

    pour les reste je regarerai ce soir si personne entretemps ne s'y penche
    a++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Re
    La douche porte conseil
    Alors pour quoi tu lit pas plutot ligne par ligne avec ReadLn, ensuite tu fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    st := readln
    ChargeBeton.items.add( leftstr(st,pos(' ', st));
    ou si tu veux pouvoir l'utiliser ailleur dans une tstringlist
    si tu veux recuperer tes integer, tu fais la meme chose avec Midstr au lieu de leftstr, voir meme rigthstr pour le dernier mais il serait plus propre de faire une boucle qui utilise MidStr et qui enregistre tes 3 valeurs (nom, integer,integer) dans un tableau de TStringList[0..2]



    [Edit]
    Quelque chose comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var i, intPos, Integer;
    [...]
    intPos := 0;
    For i := 0 to 2 then
    begin
      MastringList[i].add(Midstr(st,intPos,pos(' ',st)-1);
      intPos := Pos(' ',st)+1
    end;
    y'aurais peut etre meme une amelioration a faire au niveau de la ligne midstr sans avoir bsoin de pos, mais j'en suis pas certain, et on en ai pas la.
    [/edit]
    Aller bon courage

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Salut,
    je vais te faire un compliment: t'as de bonnes idées. Je vais m'envoyer des roses: j'ai les mêmes!
    Tout ce que tu me dis est très bon et "evident" dans le sens où tu utilises effectivement Delphi comme il doit l'être. Mais quelque soit la methode le problème c'est que bidule.add (ou .append) ne remplit pas bidule. Tu peux trouver toutes les subtilités, bidule est toujours vide...
    Pour info, je l'ai fais avec des records et des pointers et ça ce passe bien. A tel point que le ComboBox.Items.add(string) fonctionne très bien. Mais il semblerait que TStringList soit une Classe "virtuelle". Je me demande si l'on peut l'utiliser en temps que tel.
    L'aide précise bien qu'il ne faut pas utiliser les TStrings directement mais passer par un dérivé. Comme TStringList est un dérivé, a priori on peut l'utiliser.
    J'ai pas eut le temps d'essayer mais je me demande si (comme d'autres composants) il ne faudrait pas affecter un parent pour que Delphi sache "où le placer". Je n'ai pas testé mais si on affecte directement dans une TlistBox, ça doit fonctionner... ensuite on peut peut-être extraire un TStringList générée par la TListBox... Mais c'est vraiment pas propre...

  15. #15
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Re
    Alors pourquoi ca ca fonctionne? c'est bien ce que tu cherches a faire ?

    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
    procedure TForm1.Button1Click(Sender: TObject);
    Var StrList : TStringList;
    begin
         StrList := TStringList.Create;
     
         StrList.Add('essai');
         StrList.Add('pour');
         StrList.Add('remplire');
         StrList.Add('un');
         StrList.Add('ComboBox');
     
         ComboBox1.Items := StrList;
     
         StrList.free;
     
    end;
    [Edit]
    Dans ce cas la liste existante du Combo est suprimé, si tu veux la conserver fais comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         ComboBox1.Items.AddStrings(StrList);
    [/Edit]
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    ... J'ai surement trouvé...
    Extrait de l'aide .Add :

    " [Delphi] public function Add(const S: string): Integer; "

    Tu noteras le 'const'... est ce que par hazard ça n'empêcherait pas de mettre une variable à la place d'un 'truc' qui est une constante, elle !?!

    Non ???

  17. #17
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    AS tu lu ce que je t'ai mis au dessus
    Tu ne peux pas mettre une TStringList en parametre ni pour add ni pour append, ni pour assigne

    Add et append ajoute a ta liste deja existante une string or TStringList c'est une liste de Sting donc un strings
    Par contre items est un strings et items.addstrings eux gere les strings donc les TStringList !

    Nota: Je veux bien etre gentil mais je vais pas repeter 50 fois les infos avant que tu daignes les lire, alors prend le temps de regarder les post comme il faut, je suis pas en colere mais bon

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Bon alors déjà, t'enerve pas! C'est vrai que je me suis fais une reflexion que je n'est pas ecrite donc mon message peut parraître hors de propos. Je reprends.

    J'ai bien compris ce que tu veux dire mais... Il existe bien une methode .Add pour les TSringList qui va ajouter une string à une TStringList qui dérive d'une TStrings. Là on est d'accord.
    Pour les ComboBox, il existe effectivement .Items qui est une TStringList donc il existe .Items.Add qui est une methode de .Items. On est d'accord, d'ailleurs avec des records enchainés c'est comme ça que je remplis mes TComboBox.
    Mais tu ne trouveras pas de .Items sur une TStringList! Pour les TComboBox ça reviendrait à un .Items.Items ... ça n'existe pas.
    Donc si effectivement ton idée est bonne, on ne peut pas écrire " ChargeBeton.items.add " parce que ChargeBeton est une TStringList donc le .Items n'existe pas. Fais la manip toi même. Prend une procedure, met une TStringList et dans le corps en mettant le "." Delphi ne te proposera pas le "property Items (TStringList)" parce qu'il n'existe pas.

    Voilà. Je lis tes posts ne t'inquiete pas! Ca n'aurait aucun sens de demander de l'aide sans écouter la réponse ... enfin pour moi!

    Merci tout de même de te pencher sur le problème.
    @+

  19. #19
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Donc ChargeBeton est un TStringList! par un ComboBox!
    Donc si chargebeton ET STRList sont tout 2 des TStringListe je perssiste

    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
    procedure TForm1.Button1Click(Sender: TObject);
    Var StrList,StrEssai : TStringList;
    begin
         StrList := TStringList.Create;
         stressai := TStringList.Create;
         StrList.Add('essai');
         StrList.Add('pour');
         StrList.Add('remplire');
         StrList.Add('un');
         StrList.Add('ComboBox');
     
         //ComboBox1.Items.AddStrings(StrList);
         stressai.Assign(StrList);
     
         ComboBox1.Items.AddStrings(StrList); //juste pour verifier le contenu de StrEssai
     
         StrList.free;
         stressai.Free;
    end;
    [Edit]
    Bon je viens de voir ce qu'est ChargeBeton c'est une function ... et tu retour une TStringList donc du coup c'est moi qui lit mal les post !...

    Bon alors j'ai vu passer un post y'a pas longtemps ou quelqu'un avais un probleme avec ca recherche dans les dernier message et si tu trouve rien je regarde ce soir.
    Je crois me souvenir et ca colle avec ce qu'a mis Rayek un peu plus haut et ce que tu mettais au debut par contre il ne faut pas le liberé avant la sortie de la procedure, y'a une subtilité et elle se trouve dans le post dont je te parle.Je vais dejeuner je jete un oeil rapidement apride[/Edit]

    [Edit2]
    Et voila
    http://www.developpez.net/forums/sho...d.php?t=448078
    [/Edit2]
    a++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Bonjour,

    il ne faut pas utiliser le même nom pour une fonction et pour une classe.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2006, 22h21
  2. [VBA-E] Comment remplir une ComboBox ?
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2006, 09h03
  3. comment remplir une table
    Par donny dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/07/2005, 11h22
  4. Comment remplire une CList ?
    Par stof dans le forum MFC
    Réponses: 23
    Dernier message: 02/02/2005, 17h33
  5. [SWT] Comment remplir une Table ?
    Par simon77 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 23/08/2004, 10h31

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