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 :

Tableau de String List


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par défaut Tableau de String List
    bonjour,
    j'ai un petit problème d'initialisation d'objets de ma classe qui contient une liste des liste , je m'explique

    voici ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class TCode{
    public:
     
            char Id[55];
     
            TStringList *cle[150];
    private:
    }   ;
    lorsque j'initialise une série de codes (130), il faut aussi que j'initialise pour chaque code 150 stringlist,en gros je veux manipuler les codes de la façon suivante: Traiter(code[i].cle[j])
    mon problème c'est l'initialisation, car j'ai essayé plusieurs façons est qui sont surement fausses.
    si une personne pouvait m'aidait

    merci d'avance.

  2. #2
    Membre Expert
    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 : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Pourquoi ne pas utiliser TObjectList, peut etre plus facile et plus "sûr" à utiliser qu'un simple tableau..

    TObjectList s'utilise comme TStringList, sauf qu'il contient de objets plutôt que des Strings.

  3. #3
    Membre éclairé Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par défaut
    une alors tous simplement une TList contenan des StringList ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par défaut
    merci pour vos reponses

    justement je cherche comment utiliser une Tliste de Tsitinglist .
    si vous pouvez me donner un petit exemple sa sera tres sympat de votre part
    merci pour votre aide.

  5. #5
    Membre Expert
    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 : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Voilà un exemple pour créer une liste de 10 TStringList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      list = new TList() ;
      TStringList *sl ;
      for( int i=0; i<10; i++ )
      {
        sl = new TStringList() ;
        sl->Add( IntToStr(i)) ;
        list->Add( sl );
      }
    Ensuite pour accéder à la Nième String de la Xième StringList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ShowMessage( ((TStringList*)list->Items[X])->Strings[N] ) ;

    - Ne pas oublier de libérer les objets crées!!!
    - A toi de protéger ton code (tests, try/catch) pour éviter les exceptions si un élément n'existe pas/plus

    Regarde quand même du coté de TObjectList qui est capable de gérer lui même la mémoire des objets qu'il contient (libération, réaffectation, etc...). Pour ma part j'utilise toujours TObjectList. A toi de voir celui qui te convient le mieux (TList ou TObjectList) selon que tu préfère gérer tes objets toi même ou non.

    .

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    En espérant avoir tout compris...
    On peut rajouter un constructeur et une méthode pour cette classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #define max_cles 15 //Chez toi 150
    #define max_codes 13 //chez toi 130
     
    class TCode{
     
    public:
    char Id[55];
    TStringList *cle[max_cles];
        TCode();
        void Free();
    };

    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
     
    TCode::TCode()
    {
    //instancier les TStringList
    for(int j = 0; j < max_cles; j++)
        {
        cle[j] = new TStringList;
        }
    }
     
    void TCode::Free()
    {
    //Libérer les TStringList
    for(int j = 0; j < max_cles; j++)
        {
        cle[j]->Clear();
        delete cle[j];
        }
    }

    Donc à l'usage, on devrait pouvoir faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TCode Code[max_codes];
    Que l'on va donc accéder comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TStringList *L = Code[0].cle[0];
    //...
    Code[0].cle[0]->Add("Chaîne");
    //...
    AnsiString N = Code[0].cle[0]->Strings[0];
    //...
    La méthode Free devra être appelée à la fin du programme pour libérer les TStringList.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
    for(int j = 0; j < max_codes; j++) Code[j].Free();
    }
    A plus !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Par défaut
    merci pour vos reponse,

    c'est bon.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/05/2006, 14h30
  2. [J2SE] tableau de string
    Par Jules82 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 17/03/2005, 14h35
  3. Ranger un tableau de String dans ma HashMap
    Par jeyce dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 26/08/2004, 22h41
  4. [Collections] Conversion de Vector en tableau de String
    Par java_math dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/06/2004, 12h55
  5. [Collections] Tableau de String
    Par gexti dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 02/06/2004, 15h42

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