[ Delphi ] TObjectList et initialisation memoire

TObjectList et initialisation memoire [ Delphi ] - Delphi/Pascal - Programmation

Marsh Posté le 01-09-2003 à 12:11:08    

:hello:  
 
Je suis a nouveau dans une impasse avec les TObjectList, la deuxieme.  
Bref, je me suis fait un beau petit objet que j'ai besoin de gerer avec une liste. Le TObjectList semble approprie pour ca, surtout si il own son contenu. Maintenant le probleme, pour ajouter un objet a la liste, par la fonction add, l'objet doit avoir ete cree precedement et donc :
 

Code :
  1. procedure UnObjet();
  2. var
  3.   MonObjet: TMonObjet;
  4.   MaListe:  TObjectList;
  5. begin
  6.   MonObjet := TMonObjet.create;
  7.   MaListe.Add(MonObjet);
  8. end;


 
Maintenant, si je veux ajouter un nombre inconnu d'objets, je peux faire ca :
 

Code :
  1. procedure PleinObjets(i: integer)
  2. var
  3.   MonObjet: TMonObjet;
  4.   MaListe:  TObjectList;
  5.   j: integer;
  6. begin
  7.   for j := 0 to i do
  8.   begin
  9.     MonObjet := TMonObjet.create;
  10.     MaListe.Add(MonObjet);
  11.   end;
  12. end;


 
Ou bien je vais me retrouver avec i fois le meme objet dans la liste ?


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 01-09-2003 à 12:11:08   

Reply

Marsh Posté le 01-09-2003 à 13:06:41    

non, ça marche comme ça ;) À chaque fois ta variable MonObjet est modifiée donc tu ajoute quelque chose de différent à chaque fois


Message édité par antp le 01-09-2003 à 13:07:13

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-09-2003 à 13:11:36    

Attention à ne pas perdre des objets en mémoire  ;)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 01-09-2003 à 13:14:17    

S'il fait un Add pour chaque Create il n'en perdra normalement pas


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-09-2003 à 13:27:09    

oui
 
sauf si + tard il fait un truc du genre
 
MyObjectList.Items(i) := MyObjectSortitDeNulPart;
 
ds ce cas l'objet ki se trouvait à l'index i avant l'affectation est perdu ds la nature  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 01-09-2003 à 13:54:53    

Poipoi a écrit :

oui
 
sauf si + tard il fait un truc du genre
 
MyObjectList.Items(i) := MyObjectSortitDeNulPart;
 
ds ce cas l'objet ki se trouvait à l'index i avant l'affectation est perdu ds la nature  :D  


 
Il est perdu ou ecrase ? Parce-que c'est pas exactement la meme chose  :o


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 01-09-2003 à 14:02:34    

ciler a écrit :


 
Il est perdu ou ecrase ? Parce-que c'est pas exactement la meme chose  :o  


perdu perdu
 
pas déallouer ni rien, juste perdu
(tu perd la référence à l'objet)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 01-09-2003 à 14:43:07    

ciler a écrit :


 
Il est perdu ou ecrase ? Parce-que c'est pas exactement la meme chose  :o  


 
pointeur écrasé, objet perdu


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-09-2003 à 15:43:01    

A pis un autre truc aussi
 
Si j'ai MaListe qui devient une variable globale, et que je remplis pareil, le contenu de la liste souffre pas de la sortie de la procedure dans laquelle MonObjet est definis (et a l'issu de laquelle a priori il n'existe plus)


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 01-09-2003 à 15:50:40    

ciler a écrit :

A pis un autre truc aussi
 
Si j'ai MaListe qui devient une variable globale, et que je remplis pareil, le contenu de la liste souffre pas de la sortie de la procedure dans laquelle MonObjet est definis (et a l'issu de laquelle a priori il n'existe plus)


non
ton objet sera tjs ds ta liste


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 01-09-2003 à 15:50:40   

Reply

Marsh Posté le 01-09-2003 à 15:59:57    

en Delphi les objets sont des pointeurs même si on ne le voit pas trop en les manipulant, comme en JAVA quoi.


Message édité par antp le 01-09-2003 à 16:00:45

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-09-2003 à 16:14:02    

antp a écrit :

en Delphi les objets sont des pointeurs même si on ne le voit pas trop en les manipulant, comme en JAVA quoi.


 :ouch:  :fou:  
 
Compare plus jamais Delphi au Java  :o


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 01-09-2003 à 22:21:03    

antp a écrit :

en Delphi les objets sont des pointeurs même si on ne le voit pas trop en les manipulant, comme en JAVA quoi.


 
Ca je sais, je m'inquietais plus d'un probleme de portee que de persistance. Surtout que la mon objet est une classe, alors il pointise plein tube  :D  
 
Comment je vais m'en sortir moi  [:ciler]


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 02-09-2003 à 08:50:02    

En faisant bien attention et en étant rigoureux  :whistle:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 12:09:52    

ciler a écrit :


 mon objet est une classe


 
:??: Tout objet est une instance de classe, non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 13:52:00    

antp a écrit :


 
:??: Tout objet est une instance de classe, non ?


Beh il vaut mieux non ? :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 14:06:07    

Ouais enfin en Delphi c'est vague
 
tu as trois types :
- record
- object
- class
 
le premier contient juste des attributs, et s'alloue soit en déclarant une variable soit en réservant une zone mémoire (GetMem) et en jouant avec un pointeur
 
le second c'est pareil, sauf qu'il peut avoir des méthodes, et je suis pas sûr qu'on puisse le déclarer comme une variable. Il se peut qu'on doive obligatoirement l'allouer via un GetMem.
 
le troisième a aussi attributs et méthodes, mais il descend toujours de TObject, et a donc les méthodes de TObject : Create, Free (Destroy), etc. , qui facilitent la création/destruction et pas mal d'autres choses.
 
Un objet est une instance d'une classe (en POO), mais en delphi "object" <> "class" :D


Message édité par antp le 02-09-2003 à 14:06:38

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 14:11:18    

Il me semble que Object est resté juste par soucis de compatibilité avec le Pascal


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 14:16:17    

Oui mais bon il existe quand même :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 14:19:13    

antp a écrit :

Oui mais bon il existe quand même :/


Comme un tas de d'API obsolètes & co...


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 14:22:27    

les fonctions obsolètes te mettent un warning :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 14:26:47    

Sur D7 s'il fallait s'oqp de tout les warnings  :o


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 14:29:34    

:heink: suffit de désactiver les trois trucs de warnings pour .NET quand tu ouvres un vieux projet et t'as pas plus de warning qu'avec Delphi 6
 
Me dit pas que tu bosses avec des centaines de warning [:wam] (ça met un temps fou à compiler à cause de ça en plus)
 
Idéalement un soft doit compiler sans warning/hints, ou alors juste un ou deux dans quelques rares cas non résolvables. Évidemment il arrive que les compos utilisés laissent eux aussi des warnings/hints.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 14:32:53    

des hints C pas bon
des warnings... :whistle:
 
edit : pour répondre à ta question... ça dépend  :whistle:  
 [:neowen]


Message édité par Poipoi le 02-09-2003 à 14:35:53

---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 14:35:56    

les warnings c'est plus grave que les hints
 
Pour Delphi 7, si tu fais pas du code portable vers .NET tu dois décocher les 3 derniers trucs dans Project -> Options -> Compiler Messages.
 
Et tu peux aussi virer le 3è et 5è si tu fais pas du code portable CLX.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 14:38:00    

antp a écrit :

les warnings c'est plus grave que les hints
 
Pour Delphi 7, si tu fais pas du code portable vers .NET tu dois décocher les 3 derniers trucs dans Project -> Options -> Compiler Messages.
 
Et tu peux aussi virer le 3è et 5è si tu fais pas du code portable CLX.


je C, mais des fois G la flemme  :ange:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 14:42:06    

[:mlc] pour virer 3 options ?
 
comment tu sais bosser avec tant de warnings/hints ? on voit pas ceux qui sont importants :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 14:44:54    

G + trop le loisir de bosser sur de gros trucs en Delphi  :cry:  
Donc G pas tant de warning que ça


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 14:49:51    

Ouais enfin dès que tu utilises des compos tiers (style JVCL) t'as vite des centaines de warnings si tu vires pas ces trois trucs :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 14:54:20    

antp a écrit :

Ouais enfin dès que tu utilises des compos tiers (style JVCL) t'as vite des centaines de warnings si tu vires pas ces trois trucs :o


t'as ke les warnings de la page en cours ou de celle ou ya une erreur quand tu executes(pas celle du code ki est pas ouvert) donc...


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 15:18:33    

Ouais mais moi je fais de temps en temps des build all pour voir si dans mon programme y a pas des trucs qui ont souffert des certaines modifs, ou des warnings que j'ai loupé et qu'il ne me représente plus (vu que j'y ai plus touché).


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 15:21:28    

antp a écrit :

Ouais mais moi je fais de temps en temps des build all pour voir si dans mon programme y a pas des trucs qui ont souffert des certaines modifs, ou des warnings que j'ai loupé et qu'il ne me représente plus (vu que j'y ai plus touché).


Moi aussi, mais pas toute les 5mn  :p


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 15:25:33    

t'as fini de discuter pour rien :o
c'est pas pratique d'avoir des centaines de warning lors d'un build all, y a 3 cases à décocher pour pas les avoir, autant les décocher.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 15:30:15    

antp a écrit :

t'as fini de discuter pour rien :o


G ke ça à faire  :o
et à priori toi aussi  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 02-09-2003 à 15:36:40    

:p
non faut que j'aille vérifier la pression des pneus de ma bagnole


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-09-2003 à 16:40:58    

Oh, un topic baston [:dawa]
 
oh, c'est le mien en plus  [:runner11]


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Marsh Posté le 02-09-2003 à 16:43:09    

ciler a écrit :

Oh, un topic baston [:dawa]
 
oh, c'est le mien en plus  [:runner11]  


où t'as vu une baston ?


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed