[debutant] Probleme de Pointer... ou pas ???

damanix Messages postés 20 Date d'inscription samedi 7 septembre 2002 Statut Membre Dernière intervention 2 novembre 2002 - 8 sept. 2002 à 21:52
damanix Messages postés 20 Date d'inscription samedi 7 septembre 2002 Statut Membre Derniè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 ??? )

Merci pour toute réponse
%-6 Dx.

5 réponses

Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 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.

;) Bruto
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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...

--- :sleepy) Nono du Moulin :sleepy) ---
0
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 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.

Ma foi j'attends avec impatience ta réponse

;) Bruto
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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) ---
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
damanix Messages postés 20 Date d'inscription samedi 7 septembre 2002 Statut Membre Dernière intervention 2 novembre 2002
10 sept. 2002 à 01:54
Wa !!!!!!!! :blush)

En tout cas bravo pour la réactivité !!!
Je viens de télécharger le tutorial et je vais m'y mettre tout de suite !!!

Merci * tooBigInt
Dx.
0
Rejoignez-nous