Thema: Delphi Variable nicht "leer"?

Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Variable nicht "leer"?

  Alt 28. Apr 2005, 09:23
Zitat von LoL:
.... Wird nicht bei FreeAndNil auch der Speicher freigegeben und geleert?
Hai LoL,

FreeAndNil und .Free geben den Speicher der Instanz nur wieder frei. Der Speicher wird nicht gelöscht.

Der Unterschied zwichen FreeAndNil und .Free ist "nur" das im ersten Fall der Variablen (die ja nur ein Pointer auf eine Instanz ist) der Wert NIL zugewiesen wird. Dies ist nützlich um im Programm abfragen zu können ob die "Variable" noch gültig ist.

z.B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  sl1 : TStringList;
  sl2 : TStringList;
begin
  sl1 := TStringList.Create;
  sl1.Free;
  sl2 := TStringList.Create;
  FreeAndNil (sl2);
  if Assigned(sl1) then
  begin
    ShowMessage ('SL1 verweisst noch auf eine Adresse');
  end
  else
  begin
    ShowMessage ('SL1 verweisst nicht auf eine Adresse');
  end;
  if Assigned(sl2) then
  begin
    ShowMessage ('SL2 verweisst noch auf eine Adresse');
  end
  else
  begin
    ShowMessage ('SL2 verweisst nicht auf eine Adresse');
  end;
end;
Warum bei dir noch Daten vorhanden sind ist aber nicht normal. Kannst Du etwas mehr Code zeigen?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat