![]() |
Delphi-Version: 5
Nochmal aufgegriffen: Objekte freigeben notwendig?
Hi!
Ich würde gerne mal einige Fragezeichen in meinem Kopf endlich ausräumen. Und zwar möchte ich mich insbesondere auf Beitrag #4 in ![]() ![]() Man stelle sich folgende Situation vor:
Code:
Nun schrieb Sir Thornberry (#10):
type
TLeerKlasse = class(TObject) private FObjektInObjekt: TObject; end; implementation constructor TLeerKlasse.Create; begin inherited Create; FObjektInObjekt := TObject.Create; end; Zitat:
Verstehe ich es richtig, dass FObjektInObjekt bei mir auf meinem Objekt der Klasse TLeerKlasse liegt und ich deshalb im destructor von TLeerKlasse meine Instanz von FObjektInObjekt nicht freigeben muss, weil dies automatisch geschieht? 2. FRAGE: Wenn ich nun irgendwo beispielsweise ein Objekt BeispielObjekt vom Typ TComponent erzeuge mit einer Instanz von TLeerKlasse als Owner, dann müsste ja (vgl. selber Beitrag) dieses BeispielObjekt automatisch zerstört werden, wenn ich die Instanz von TLeerKlasse (die ja nur von TObject erbt) zerstöre - richtig? Ich frage mich nur, an welcher Stelle "weiß" denn meine Instanz von TLeerKlasse, dass sie auch BeispielObjekt zerstören soll? Soweit, so gut. Wäre nett, wenn mich jemand freundlicherweise aufklären könnte... Viele Grüße! Robert |
AW: Nochmal aufgegriffen: Objekte freigeben notwendig?
Zitat:
Zitat:
|
AW: Nochmal aufgegriffen: Objekte freigeben notwendig?
Vielen Dank, jetzt wird mir einiges klar :thumb:
|
AW: Nochmal aufgegriffen: Objekte freigeben notwendig?
kleiner Nachsatz:
Eine Komponente (X) sammelt alle Subkomponenten in einer Liste.
Delphi-Quellcode:
X verwaltet dann eine Liste von 3 Subkomponenten, die Du über diese Liste auch ansprechen kannst.
A := TA.Create(X);
B := TB.Create(X); C := TC.Create(X); Mit X.DestroyComponents kannst Du alle 3 Subkomponenten freigeben, was bei X.Free automatisch erfolgt. |
AW: Nochmal aufgegriffen: Objekte freigeben notwendig?
Owner - Child Beziehung bei TComponent sieht ca so aus:
Create: Der Owner fügt die gerade erstellte Klasse in seine "Child-Liste" Destroy: Die Instanz ruft Free bei allen "Child-Listen" Elementen auf, die wiederum dasselbe machen (usw, usf - rekursives Löschen einer Hirarchie) und löscht letzendlich seine eigene Instanz. MfG |
AW: Nochmal aufgegriffen: Objekte freigeben notwendig?
Vielen Dank euch beiden für die weiteren Infos! :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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-2025 by Thomas Breitkreuz