Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wann .Free und wann .Destoy benutzen (https://www.delphipraxis.net/95609-wann-free-und-wann-destoy-benutzen.html)

DelphiManiac 10. Jul 2007 12:12


Wann .Free und wann .Destoy benutzen
 
Hallo,
habe eine Frage zur Benutzung des Destuktors meiner Klasse.

ich kann ja folgendes schreiben:

Delphi-Quellcode:
meinObjekt.Free;
oder ich rufe den von mir erstellten Destructor

Delphi-Quellcode:
meinObjekt.Destroy;
auf...

Gut meine Frage nun, was macht .Free?
Setzt free nur die Objektreferenz auf NULL?
Oder ruft Free auf den Destruktor auf?

Danke schonmal

scrat1979 10. Jul 2007 12:14

Re: Wann .Free und wann .Destoy benutzen
 
Hallo!

hier findest Du des Rätsels Lösung :-)

SCRaT

mkinzler 10. Jul 2007 12:14

Re: Wann .Free und wann .Destoy benutzen
 
Nimm .Free. Hier werden verschiedene Test durchgeführt und dann .Destroy aufgerufen. man sollte .Destroy nie manuell aufrufen.

DelphiManiac 10. Jul 2007 12:25

Re: Wann .Free und wann .Destoy benutzen
 
Danke,
war genau das was ich gesucht habe!!

Weiß jetzt auch wo mein Fehler war,.. habe in meine Klasse den Destruktor nicht überschrieben,
demzufolge wurde er auch nie aufgerufen...


Danke!

dajuhsa 10. Jul 2007 12:44

Re: Wann .Free und wann .Destoy benutzen
 
also ist
Delphi-Quellcode:
XYZ.Free
das gleiche wie
Delphi-Quellcode:
if XYZ <> nil then XYZ.Destroy
?

sakura 10. Jul 2007 12:47

Re: Wann .Free und wann .Destoy benutzen
 
Zitat:

Zitat von dajuhsa
also ist
Delphi-Quellcode:
XYZ.Free
das gleiche wie
Delphi-Quellcode:
if XYZ <> nil then XYZ.Destroy
?

Momentan ja, aber das kann sich theoretisch in kommenden Delphi-Versionen ändern oder in Delphi.NET anders implementiert sein :zwinker: Aber nach außen bleibt einfach immer der AUfruf zu .Free :)

...:cat:...

mkinzler 10. Jul 2007 12:50

Re: Wann .Free und wann .Destoy benutzen
 
Ja :

Zitat:

Zitat von System.pas
procedure TObject.Free;
begin
if Self <> nil then
Destroy;
end;


sirius 10. Jul 2007 19:21

Re: Wann .Free und wann .Destoy benutzen
 
Zitat:

Zitat von sakura
Momentan ja, aber das kann sich theoretisch in kommenden Delphi-Versionen ändern oder in Delphi.NET anders implementiert sein :zwinker: Aber nach außen bleibt einfach immer der AUfruf zu .Free :)

Wäre doch mal ein Ding, wenn die Free-Methode demnächst autmatisch den Zeiger auf nil setzt :mrgreen:

mkinzler 10. Jul 2007 19:24

Re: Wann .Free und wann .Destoy benutzen
 
Zitat:

Wäre doch mal ein Ding, wenn die Free-Methode demnächst autmatisch den Zeiger auf nil setzt
Wird wohl nicht gehen. dafür gibt es ja aber FreeAndNil()

SirThornberry 10. Jul 2007 19:46

Re: Wann .Free und wann .Destoy benutzen
 
Zitat:

Zitat von mkinzler
Zitat:

Wäre doch mal ein Ding, wenn die Free-Methode demnächst autmatisch den Zeiger auf nil setzt
Wird wohl nicht gehen. dafür gibt es ja aber FreeAndNil()

ich würde es nicht pauschalisieren. Mit Compilermagic geht einiges. Siehe Strings und deren Handling.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Seite 1 von 3  1 23      

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