Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Free oder FreeAndNil= (https://www.delphipraxis.net/139353-free-oder-freeandnil%3D.html)

mkinzler 27. Aug 2009 10:27

Re: Free oder FreeAndNil=
 
Zitat:

Sicher? Ich würde sagen, "FreeAndNil" nach "Free" wird auch einen Fehler werden Razz
Nein, den FreeAndNil() überprüft vorher

DeddyH 27. Aug 2009 10:33

Re: Free oder FreeAndNil=
 
Ja, das prüft auf Assigned(), was in diesem Fall aber das falsche Ergebnis liefert, also knallt es.

Hawkeye219 27. Aug 2009 10:48

Re: Free oder FreeAndNil=
 
Hallo,

Fabian bezog sich wohl auf den von Heiko geposteten Code. Man muss die beiden Codestücke in dessen Beispiel voneinander losgelöst sehen.

Gruß Hawkeye

taaktaak 27. Aug 2009 10:50

Re: Free oder FreeAndNil=
 
Zitat:

FreeAndNil() überprüft vorher
Offenbar aber nicht in allen Versionen der "SysUtils"
- in meiner (Delphi 7) Version kann ich keine Prüfung entdecken :(

himitsu 27. Aug 2009 10:50

Re: Free oder FreeAndNil=
 
Jaaaa, also wenn man den Code genauso nimmt, wie er dort steht, dann knallt es natürlich :roll:

ich glaub es war auch mehr so gemeint :zwinker:
Delphi-Quellcode:
object.Free;
if Assigned(object) -> liefert Müll
Delphi-Quellcode:
FreeAndNIL(object);
if Assigned(object) -> liefert immer False (weil object NIL ist)
[edit]
genau @Hawkeye219

@taaktaak:
doch doch
Delphi-Quellcode:
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;

procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;

Muetze1 27. Aug 2009 10:56

Re: Free oder FreeAndNil=
 
Zitat:

Zitat von taaktaak
Zitat:

FreeAndNil() überprüft vorher
Offenbar aber nicht in allen Versionen der "SysUtils"
- in meiner (Delphi 7) Version kann ich keine Prüfung entdecken :(

Falsch formuliert: .Free prüft vorher und da FreeAndNil() intern .Free aufruft, hat es auch diese Prüfung.

@QuickAndDirty: Dein Argument ist hinfällig, da alles was du beschreibst auf unsaubere Programmierung hindeutet und genau da liegt das Problem und nicht bei FreeAndNil()

taaktaak 27. Aug 2009 10:58

Re: Free oder FreeAndNil=
 
Asche auf mein Haupt
- natürlich :pale:

Dezipaitor 27. Aug 2009 23:01

Re: Free oder FreeAndNil=
 
Interessant:
http://blog.eurekalog.com/?p=135


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.
Seite 2 von 2     12   

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