Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [ERLEDIGT] Freigabe von übergebenen Objekten (https://www.delphipraxis.net/27633-%5Berledigt%5D-freigabe-von-uebergebenen-objekten.html)

mytar 13. Aug 2004 10:55


[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 :)

Dannyboy 13. Aug 2004 12:12

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:

GuenterS 13. Aug 2004 12:53

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...

mytar 13. Aug 2004 16:26

Re: Freigabe von übergebenen Objekten
 
Zitat:

Zitat von Dannyboy
War das in etwa die Antwort auf Deine Frage? :gruebel:

Danke Dannyboy, aber das ist nicht die richtige Antwort die sich suche.

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 :) :)

maximov 13. Aug 2004 16:48

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.

mytar 13. Aug 2004 16:51

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

Niko 13. Aug 2004 17:25

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.

mytar 13. Aug 2004 17:35

Re: Freigabe von übergebenen Objekten
 
Danke, für eure Hilfe! :)

Also [Erledigt]!

greetz
mytar

GuenterS 13. Aug 2004 17:47

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 23: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