TObjectList et initialisation memoire [ Delphi ] - Delphi/Pascal - Programmation
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
Marsh Posté le 01-09-2003 à 13:11:36
Attention à ne pas perdre des objets en mémoire
Marsh Posté le 01-09-2003 à 13:14:17
S'il fait un Add pour chaque Create il n'en perdra normalement pas
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
Marsh Posté le 01-09-2003 à 13:54:53
Poipoi a écrit : oui |
Il est perdu ou ecrase ? Parce-que c'est pas exactement la meme chose
Marsh Posté le 01-09-2003 à 14:02:34
ciler a écrit : |
perdu perdu
pas déallouer ni rien, juste perdu
(tu perd la référence à l'objet)
Marsh Posté le 01-09-2003 à 14:43:07
ciler a écrit : |
pointeur écrasé, objet perdu
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)
Marsh Posté le 01-09-2003 à 15:50:40
ciler a écrit : A pis un autre truc aussi |
non
ton objet sera tjs ds ta liste
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.
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. |
Compare plus jamais Delphi au Java
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
Comment je vais m'en sortir moi
Marsh Posté le 02-09-2003 à 08:50:02
En faisant bien attention et en étant rigoureux
Marsh Posté le 02-09-2003 à 12:09:52
ciler a écrit : |
Tout objet est une instance de classe, non ?
Marsh Posté le 02-09-2003 à 13:52:00
antp a écrit : |
Beh il vaut mieux non ?
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"
Marsh Posté le 02-09-2003 à 14:11:18
Il me semble que Object est resté juste par soucis de compatibilité avec le Pascal
Marsh Posté le 02-09-2003 à 14:16:17
Oui mais bon il existe quand même
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...
Marsh Posté le 02-09-2003 à 14:22:27
les fonctions obsolètes te mettent un warning
Marsh Posté le 02-09-2003 à 14:26:47
Sur D7 s'il fallait s'oqp de tout les warnings
Marsh Posté le 02-09-2003 à 14:29:34
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 (ç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.
Marsh Posté le 02-09-2003 à 14:32:53
des hints C pas bon
des warnings...
edit : pour répondre à ta question... ça dépend
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.
Marsh Posté le 02-09-2003 à 14:38:00
antp a écrit : les warnings c'est plus grave que les hints |
je C, mais des fois G la flemme
Marsh Posté le 02-09-2003 à 14:42:06
pour virer 3 options ?
comment tu sais bosser avec tant de warnings/hints ? on voit pas ceux qui sont importants
Marsh Posté le 02-09-2003 à 14:44:54
G + trop le loisir de bosser sur de gros trucs en Delphi
Donc G pas tant de warning que ça
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
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 |
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...
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é).
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
Marsh Posté le 02-09-2003 à 15:25:33
t'as fini de discuter pour rien
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.
Marsh Posté le 02-09-2003 à 15:30:15
antp a écrit : t'as fini de discuter pour rien |
G ke ça à faire
et à priori toi aussi
Marsh Posté le 02-09-2003 à 15:36:40
non faut que j'aille vérifier la pression des pneus de ma bagnole
Marsh Posté le 02-09-2003 à 16:40:58
Oh, un topic baston
oh, c'est le mien en plus
Marsh Posté le 02-09-2003 à 16:43:09
ciler a écrit : Oh, un topic baston |
où t'as vu une baston ?
Marsh Posté le 01-09-2003 à 12:11:08
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 :
Maintenant, si je veux ajouter un nombre inconnu d'objets, je peux faire ca :
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