Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi freigeben? (https://www.delphipraxis.net/32049-freigeben.html)

Pseudemys Nelsoni 18. Okt 2004 04:47


freigeben?
 
hi,

wenn ich eine komponente im create zur laufzeit erstelle und als owner Form1 übergebe, muss ich sie dann am ende OnClose auch wieder freigeben? soweit ich weiss müsste form1 das als owner selbst tun oder?

teebee 18. Okt 2004 07:07

Re: freigeben?
 
Ja, die Freigabe übernimmt der Owner selbst.

Gruß, teebee

Pseudemys Nelsoni 18. Okt 2004 07:21

Re: freigeben?
 
gut, danke.

wäre es auch so wenn es der Parent wäre? das gleiche wie Owner?

teebee 18. Okt 2004 07:43

Re: freigeben?
 
Wenn ein WinControl zersört wird, gibt es alle Child-Controls vorher frei, d.h. alle Komponenten, die als Parent dieses WinControl haben. Im Prinzip brauchst Du also entweder einen Owner oder ein Parent. (Auch wenn die OH hier etwas anderes sagt... siehe: TWinControl.Destroy).
Aber alle Objekte _ohne_ Owner oder Parent müssen von Dir selber freigegeben werden.

Gruß, teebee

dizzy 18. Okt 2004 08:40

Re: freigeben?
 
In meinem Kopf schwirrt etwas rum von wegen, dass nur "Owner" für die Freigabe verantwortlich ist. Parent hingegen hat damit nichts zu tun, sondern gibt nur an, wo sich visuelle Kompos hinzeichnen sollen. Es kann aber auch sein, dass ich das genau vertausche...
Auf jeden Fall sind nicht beide für die Freigabe von Bedeutung.

Sanchez 18. Okt 2004 08:48

Re: freigeben?
 
@dizzy
Was bei dir im Kopf rumschwirrt ist richtig.
Der Owner kümmert sich um den Speicher bzw die Freigabe und der Parent sagt, wohins gemalt werden soll.

teebee 18. Okt 2004 08:59

Re: freigeben?
 
Zitat:

Zitat von Sanchez
Der Owner kümmert sich um den Speicher bzw die Freigabe und der Parent sagt, wohins gemalt werden soll.

Das ist zwar prinzipiell richtig so und wird auch so in der OH beschrieben, aber ein Blick in die VCL-Quellen zeigt, dass TWinControl in Destroy seine untergeordneten Controls freigibt. Komponenten, die kein Control sind fallen da natürlich nicht drunter, die haben ja aber auch gar kein Parent.

Gruß, teebee

dizzy 18. Okt 2004 09:16

Re: freigeben?
 
Zitat:

Zitat von teebee
Komponenten, die kein Control sind fallen da natürlich nicht drunter, die haben ja aber auch gar kein Parent.

Aber sie haben einen Owner (alle ab TComponent). Und der ist für die Freigaben zuständig - nicht der Parent! (Oder hab ich's verpeilt was du sagen wolltest? :gruebel: )

teebee 18. Okt 2004 09:24

Re: freigeben?
 
Zitat:

Zitat von dizzy
(Oder hab ich's verpeilt was du sagen wolltest? :gruebel: )

Ich glaube ja...
Natürlich sind wir uns einig, dass prinzipiell der Owner für die Freigabe einer Komponente zuständig ist. Wenn die Komponente allerdings ein Control ist und ein Parent hat, gibt der Parent in seinem Destroy diese Komponente frei: Siehe TWinControl.Destroy in den VCL-Quellen. Das steht leider nicht so in der OH, ist aber trotzdem so...

Gruß, teebee

dizzy 18. Okt 2004 10:18

Re: freigeben?
 
:shock: Datt isn Ding! Eigentlich eine Fehlerquelle par excellance, wenn man dann versucht da noch selber freizugeben...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 Uhr.
Seite 1 von 2  1 2      

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