Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#6

AW: Unterschied zwischen nil, FreeAndNil und Free in TForm

  Alt 7. Apr 2014, 16:20
Vielleicht noch ein Beispiel:
Delphi-Quellcode:
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add('Hallo');
  ShowMessage(IntToStr(sl.Count));

  sl.Free;

  ShowMessage(IntToStr(sl.Count));
end;
Hier gibt es u. U. keine Fehlermeldung, obwohl das Objekt freigegeben wurde, bzw. es wurde nur das Objekt freigegeben, ohne jedoch die Adresse zu löschen. U.U. hat sl also noch die alte Adresse und die zeigt ins Nichts und das Programm funktioniert mit Fehler, liefert also falsche Daten.

Delphi-Quellcode:
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add('Hallo');
  ShowMessage(IntToStr(sl.Count));

  FreeAndNil(sl);

  ShowMessage(IntToStr(sl.Count));
end;
Hier wird auch die Adresse von sl gelöscht, genilt, bzw. auf 0 gesetzt. Hier gibt es eine Fehlermeldung.
  Mit Zitat antworten Zitat