![]() |
[ERLEDIGT] Freigabe von übergebenen Objekten
:lol:
Es gibt in Delphi Klassen welchen man erzeugte Objekte übergibt (z.b.: über Konstruktor-Parameter). Könnnt ihr mir einige Beispiele nennen? Wer gibt diese Objekte wieder frei? Muss ich das machen, oder besitzt die Empfängerklasse des übergeben Objekts properties über welche man eine automatische Freigabe bestimmen kann? greetz mytar :) |
Re: Freigabe von übergebenen Objekten
Hallo mytar,
ich versuche mal vorsichtig, Deine Frage zu beantworten. Also, wenn Du ein Objekt an ein anderes Objekt oder an eine andere Klasse übergibst, dann geschieht dieses durch Objekt1 = Objekt2, was eine Referenz darstellt (Kopien von Objekten würde man mit der ASSIGN-Methode des TPersistent realisieren). Alle Objekte, die beim Start Deines Programms bereits verfügbar sind (Buttons, Images, etc.) dürfen von Dir NICHT freigegeben werden, da dies implizit ohnehin geschieht, wenn das Programm beendet wird. Alle Objekte, die Du selbst erstellst (TObject.create) musst Du, anders als bei C++, wieder mit <Objekt>.Free freigeben. Wenn Du Dir allerdings ein bestehendes TImage in Deine eigene Klasse kopierst (also ohne externe Referenzen), dann musst Du dafür sorgen, dass Du am Ende Deine Kopie des Objektes wieder selbs freigibst (free). War das in etwa die Antwort auf Deine Frage? :gruebel: |
Re: Freigabe von übergebenen Objekten
Würde sagen, das ist von Fall zu Fall unterschiedlich und kann nicht so pauschal erklärt werden.
Mußt darauf achten wer das Object erzeugt und was Du damit machst... |
Re: Freigabe von übergebenen Objekten
Zitat:
Warscheinlich habe ich das ganze schlecht erklärt. Ich versuchs nochmal: Es gibt in Delphi Klassen welchen man beim Konstruktoraufruf bestimmte Argumente übergeben muss. Oft ist das eine Instanz einer anderen Klasse. Meine Frage: Ich kann diese übergebene Instanz nach Beendigung der Empfängerklasse selbst freigeben. Gibt es aber eine Eigenschaft, welche bestimmt ob die Instanz von der Empfängerklasse automatisch freigeben wird, oder nicht (vermutlich müsste es als eine Boolean-property) sein. greetz mytar :) :) |
Re: Freigabe von übergebenen Objekten
Redest du von TObjectList? Wenn ja dann werden beim freigen, eben dieser, auch alle unterobjekte freigegeben, sofern OwnsObjects = true ist, was aber die stadnard einstellung ist.
|
Re: Freigabe von übergebenen Objekten
Danke!
Heißt diese property auch bei anderen Klassen OwnsObject, oder ist das sozusagen der Standardname für diese Operation? mytar :-D |
Re: Freigabe von übergebenen Objekten
Hi,
so eine Eigenschaft gibt's bei den wenigsten Klassen. Ob eine Klasse die übergebenen Objekte freigibt oder ob du das machen musst (und darfst) ist von Klasse zu Klasse verschieden. Eine pauschale Antwort kann man hier nicht geben. |
Re: Freigabe von übergebenen Objekten
Danke, für eure Hilfe! :)
Also [Erledigt]! greetz mytar |
Re: Freigabe von übergebenen Objekten
TObjectList hat zum Beispiel so eine Eigenschaft, ist aber ansonsten von Objekt zu Objekt verschieden.
Also nein es gibt kein generelles Property das Anzeigt wer was freigeben muss oder nicht. [Edit] Zu langsam, hat das Essen doch zu lange gedauert. :gruebel: :gruebel: [/Edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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