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 TStringList? [Débutant]


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut Tableau de TStringList?
    Bonjour,
    Petite question qui me passe par la tête : est-ce qu'on peut faire un tableau de TStringList ?
    Merci d'avance,

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Tu as plusieurs méthodes pour le faire

    array of TStringList donc typedef TStringList** TStringListArray , il faut penser à faire le Create\new lors de l'ajout d'un Item et le Destroy\delete à la suppression

    array[0..X] of TStringListdonc TStringList* StringListArray[X+1], Avant l'utilisation faire le Create\new (un test à NULL pour faire un léger lazyload), ne pas oublier la libération

    une TObjectList il faut penser à faire le Create\new lors de l'ajout d'un Item mais avec OwnObjecyt à true le Destroy est implicte

    ou même une TStringList dont la propriété Objects contient des TStringList ... cela pourrait donner naissance à un arbre, allocation et libération manuelle

    un vector<TStringList*> est possible, un foncteur serait idéal pour la libération !

    Perso, j'ai fait une template, voir STL list<> et VCL TList<>, basée sur une TObjectList m'évitant le cast systématique, cela rend le code bien plus lisible à mon goût
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    Merci ShaiLeTroll pour ta réactivité.

    Cette question est par curiosité personnelle, car le code suivant fonctionne mais j'ai un cast à faire effectivement

    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
    23
    24
    25
    26
    27
    28
    	TList* lListe = new TList();
    	TStringList* slListeDyn;
    	// Affectation aux listes existantes ou non ...
    	if (slListe1 != NULL)
    	{
    		lListe->Add(slListe1);
    	}
    	if (slListe2 != NULL)
    	{
    		lListe->Add(slListe2);
    	}
     
    	for (int i = 0; i < lListe->Count; i++)
    	{
    		slListeDyn = new TStringList();
    		slListeDyn = static_cast<TStringList*>(lListe->Items[i]);
    		for (int j = 0; j < slListeDyn->Count; j++)
    		{
    			ShowMessage("TStringList[" + IntToStr(i) + "] : " + slListeDyn->Strings[j]);
    		}
    	}
     
    	for (int k = 0; k < lListe->Count; k++)
    	{
    		delete lListe->Items[k];
    	}
     
    	delete lListe;

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Attention, ton code fuit !
    Tu fais des new TStringList jamais libéré dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      slListeDyn = new TStringList();
      slListeDyn = static_cast<TStringList*>(lListe->Items[i]);
    En fait, la seconde affectation écrase le pointeur obtenu par new, celui-ci ne pourra jamais être libéré

    la TObjectList au lieu d'une TList, t'épargnera les delete []
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 164
    Points : 85
    Points
    85
    Par défaut
    Merci ShaiLeTroll
    En effet, j'ai modifié mon code afin d'utilise les "TObjectList"

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/08/2006, 14h41
  2. tableau et tstringlist
    Par rimacom dans le forum Débuter
    Réponses: 3
    Dernier message: 27/04/2006, 22h13
  3. verification de doublons dans un tableau
    Par bohemianvirtual dans le forum C
    Réponses: 11
    Dernier message: 25/05/2002, 12h21
  4. transmision de tableau en parametre
    Par Horus dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/05/2002, 11h15
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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