Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Klasse in Klasse Free'n ? (https://www.delphipraxis.net/34272-klasse-klasse-freen.html)

Pseudemys Nelsoni 20. Nov 2004 11:12


Klasse in Klasse Free'n ?
 
moin,

wenn ich ein array von einer klasse innerhalb einer anderen klasse habe und die äussere klasse mit "Free" lösche, sind dann die daten des arrays der anderen klasse auch weg oder muss ich die vor dem free der hauptklasse erst löschen?

Jelly 20. Nov 2004 11:21

Re: Klasse in Klasse Free'n ?
 
Wenn ich dich richtig verstehe, hast du in deinerHauptklasse ein Array definiert. Löscht du jetzt diese Klasse, wie bitte schön willst du dann also noch auf dein Array zugreifen können. Folglich sind die Daten futsch. Ob jetzt aber auch der Speicher des Araay freigegeben wird, ist dabei eine andere Frage.

Gruß

Pseudemys Nelsoni 20. Nov 2004 11:30

Re: Klasse in Klasse Free'n ?
 
hallo jelly, natürlich will ich nichtmehr auf die daten zugreifen, sonst würd ich sie ja kaum löschen wollen *g*, jo das mit dem speicher stimmt schon, ich möchte wissen ob es automatisch aus dem speicher genommen wird oder ich vor dem Free der hauptklasse erst das array der klasse durchlaufen muss und die daten auch noch "befreien" muss. bild ich siehts so aus:

Delphi-Quellcode:
TMyClass = class
public
  anotherclasses: array of TAnotherClass
end;

so, wenn "anotherclasses" nun einige instanzen besitzt, muss ich sie dann löschen bevor ich meine intanz von "TMyClass" lösche?

Jelly 20. Nov 2004 11:36

Re: Klasse in Klasse Free'n ?
 
Ums sauber zu lösen, würde ich im Destructor von TMyClass dein Array freigeben, sprich jedes einzelne Element frei geben mittels anotherclasses[i].free, und anschliessend noch ein Setlength (anotherclasses,0) vornehmen, da es ja ein dynamisches Array ist.

Prinzipiell ist es aber so, daß Delphi dies eigentlich automatisch machen soll, ich bin aber mehr der Freund der manuellen Freigabe. Ist einfach sauberer.

maximov 20. Nov 2004 11:36

Re: Klasse in Klasse Free'n ?
 
Zitat:

Zitat von Pseudemys Nelsoni
moin,

wenn ich ein array von einer klasse innerhalb einer anderen klasse habe und die äussere klasse mit "Free" lösche, sind dann die daten des arrays der anderen klasse auch weg oder muss ich die vor dem free der hauptklasse erst löschen?

Du musst dich schon selbst darum kümmern, dass die objekte in dem array freigegeben werden. Das array selbst wird automatisch freigegeben. Ich würd an deiner stelle aber TObjectList verwenden, dann musst du dich nicht mehr kümmern, nur die liste freeen.

mirage228 20. Nov 2004 11:38

Re: Klasse in Klasse Free'n ?
 
Zitat:

Zitat von Pseudemys Nelsoni
ich möchte wissen ob es automatisch aus dem speicher genommen wird oder ich vor dem Free der hauptklasse erst das array der klasse durchlaufen muss und die daten auch noch "befreien" muss

Ja, darum musst Du dich selbst kümmern.

Zitat:

Zitat von Pseudemys Nelsoni
so, wenn "anotherclasses" nun einige instanzen besitzt, muss ich sie dann löschen bevor ich meine intanz von "TMyClass" lösche?

Ja, das würde ich dir empfehlen.

mfG
mirage228

Pseudemys Nelsoni 20. Nov 2004 11:39

Re: Klasse in Klasse Free'n ?
 
danke für die antworten :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz