damanix
Messages postés20Date d'inscriptionsamedi 7 septembre 2002StatutMembreDernière intervention 2 novembre 2002
-
8 sept. 2002 à 21:52
damanix
Messages postés20Date d'inscriptionsamedi 7 septembre 2002StatutMembreDernière intervention 2 novembre 2002
-
10 sept. 2002 à 01:54
Alors Voila, mettons que j'ai un type
type
TPersonne= class(TObject)
nom: String;
taille: Integer;
poids: Integer;
end;
que j'ai un array dynamique (autrement dit qui change souvent ;) d'enfants de cette classe avec (par exemple) à l'index
0 : enfant( nom:'tonpere'; taille:120; poids:40 )
1 : enfant( nom:'tamere'; taille:160; poids:160 )
Est ce qu'il y a un moyen de stocker par exemple dans un tableau tous les poids ( [40,160] ) et de retrouver l'instance proprietaire correspondante ( tonpere ) si je choisi l'index 0 ( 40 ) ???
Il me faut une association directe, pas une simple copie de la valeur de sorte que si tonpere.poids change la valeur stockée dans le tableau reflete le changement, et il faut bien sur que je puisse faire des ops sur le tableau des poids ( comme sort par ex... )
Argh. Si qqun comprends qqchose c cool. ( Nono du moulin va t'il me sauver la vie pour la 3e fois ??? )
Bruto
Messages postés214Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention14 mai 2004 9 sept. 2002 à 12:01
bin le principe est de disposer d'un tableau qui mémorise les adresses de chaque variable créée.
Je n'ai pas encore manipulé les pointeurs depuis que je programme en Delphi ( 3 sem ) mais je pense que cela devrait ressembler à ceci :
var
tab: array of ^Integer; // tab pointe sur un tableau d'Integer
Tableau[index] := @(tonpere.poids);
maintenant pour modifier la valeur stockée dans tonpere.poids tu dois faire une chose comme
Tableau[index]^ := 50;
je n'ai pas testé mais normalement le principe est là :
stocké l'adresse de la variable à atteindre à partir de tableau
puis chaque modification du contenu de la variable via le tableau ou l'objet TPersonne se répercute sur l'autre puisque tu ne travailles pas avec une copie mais avec l'original.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 9 sept. 2002 à 21:15
Tu n'arriveras pas à grand chose avec un tableau de pointeurs sur des entiers ( autant utiliser un tableau d'entiers ! ). La solution à été évoquée par DelphiProg : le collections. Elles permettent de définir des ensmbles d'objets facilement et de façon dynamique. Je ferais une réponse plus précise dans la soirée...
Bruto
Messages postés214Date d'inscriptionjeudi 21 mars 2002StatutMembreDernière intervention14 mai 2004 9 sept. 2002 à 21:27
j'attends ta suggestion mais comme il ne veut pas une copie de l'objet, mais bien atteindre directement la valeur via son tableau. Je ne vois pas une autre façon que par un tableau de pointeurs.
J'ai développé en C++ il y a qq années et c'était ce principe qui primait. Même qu'il fallait ajouter le décalage entre l'objet et sa variable.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 10 sept. 2002 à 00:26
En fait en regardant de plus près le problème de base, Il semble que le Tlist soit plus adapté. Il rejoint alors un peu ta solution. Je viens de placer un source sur l'utilisation d'un TList.
Pour suivre exactement la demande il faudrait séparer le tableau qui contient les poids, mais ça complique beaucoup : pour chaque poids il faudrait avec un nombre de référence pour le supprimer du tableau quand aucun membre de la famille n'est plus de ce poids et de plus si on modifie MonPer.Poids, alors tous les membres de la famille avec le même poids seraient modifiés ce qui ne doit pas être le résultat recherché ( du moins à mon avis... )
--- :sleepy) Nono du Moulin :sleepy) ---
Vous n’avez pas trouvé la réponse que vous recherchez ?