![]() |
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? |
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ß |
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? |
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. |
Re: Klasse in Klasse Free'n ?
Zitat:
|
Re: Klasse in Klasse Free'n ?
Zitat:
Zitat:
mfG mirage228 |
Re: Klasse in Klasse Free'n ?
danke für die antworten :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz