Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Create = Create? (https://www.delphipraxis.net/44588-create-%3D-create.html)

freak4fun 21. Apr 2005 10:05


Create = Create?
 
Hallo,

ist
Delphi-Quellcode:
TSomeDialog.Create(Self); und Free();
das gleiche wie

Delphi-Quellcode:
MySomeDialog := TSomeDialog.Create(nil); und MySomeDialog.Free;
? :gruebel:

MfG
freak

alcaeus 21. Apr 2005 10:10

Re: Create = Create?
 
Nein, definitiv nicht. Der Konstruktor muss einer Objektvariable zugewiesen werden, mit der du arbeiten kannst.
Bei der ersten Variante erstellst du zwar das zweite Form, aber kannst es nicht verwenden. Der Free-Aufruf zerstoert dann das Form in dem du dich befindest (weil Free in Self.Free umgewandelt wird). Die korrekte Arbeitsweise ist die zweite.

Wenn du hingegen die Objektvariable umgehen willst, musst du so arbeiten:
Delphi-Quellcode:
with TSomeForm.Create(self) do
begin
//...
  ShowModal;
//...
  Free;
end;
Greetz
alcaeus

freak4fun 21. Apr 2005 10:12

Re: Create = Create?
 
Ich bleib bei meiner Methode. (Die 2.) :mrgreen:

Danke für die Erklärung.

MfG
freak

Christian Seehase 21. Apr 2005 16:29

Re: Create = Create?
 
Moin Freak,

wenn es sich bei dem Parameter im Konstruktor um den Owner handelt, ist es allerdings wichtig, ob Du self oder nil verwendest.
Bei nil bist Du selber dafür zuständig dafür zu sorgen, dass das Objekt wieder freigegeben wird, bei self erfolgt dies automatisch wenn der Owner zerstört wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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