Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > C++Builder
C++Builder Environnement de développement RAD C++Builder. Avant de poster -> F.A.Q C++Builder, Sources C++Builder
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/12/2012, 10h57   #1
Mercusyo
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 78
Points : 26
Points : 26
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,
Mercusyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 11h18   #2
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 172
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 9 172
Points : 13 204
Points : 13 204
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

Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 11h48   #3
Mercusyo
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 78
Points : 26
Points : 26
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 :
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;
Mercusyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 17h39   #4
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 172
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 9 172
Points : 13 204
Points : 13 204
Attention, ton code fuit !
Tu fais des new TStringList jamais libéré dans
Code :
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

Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2013, 10h26   #5
Mercusyo
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 78
Points : 26
Points : 26
Merci ShaiLeTroll
En effet, j'ai modifié mon code afin d'utilise les "TObjectList"
Mercusyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h14.


 
 
 
 
Partenaires

Hébergement Web