Bonjour,
Petite question qui me passe par la tête : est-ce qu'on peut faire un tableau de TStringList ?
Merci d'avance,
Bonjour,
Petite question qui me passe par la tête : est-ce qu'on peut faire un tableau de TStringList ?
Merci d'avance,
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
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;
Attention, ton code fuit !
Tu fais des new TStringList jamais libéré dansEn fait, la seconde affectation écrase le pointeur obtenu par new, celui-ci ne pourra jamais être libéré
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 slListeDyn = new TStringList(); slListeDyn = static_cast<TStringList*>(lListe->Items[i]);
la TObjectList au lieu d'une TList, t'épargnera les delete []
Merci ShaiLeTroll
En effet, j'ai modifié mon code afin d'utilise les "TObjectList"
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager