Einzelnen Beitrag anzeigen

Eurowig
(Gast)

n/a Beiträge
 
#1

Warum macht ein TForm.Close nicht NIL

  Alt 8. Mai 2008, 10:55
Hi.

Ein TForm.Close lässt eigentlich vermuten, dass das Objekt weg ist. Aber das ist es nicht immer, bzw. nicht sofort.

Delphi-Quellcode:
MyForm := TMyForm.Create(MainForm);
MyForm.Show;

...
...
MyForm.Close;

...
...
if MyForm <> NIL then
begin
  ShowMessage('Bin verwirrt. Warum bist du nicht NIL???')
end;
Damit ich auf NIL prüfen kann musste ich noch das 'Close' ergänzen

Delphi-Quellcode:
MyForm.Close;
FreeAndNil(MyForm);
Meine Frage: Ist das nun gut oder schlecht. Wenn ein Objekt auf NIL gesetzt wird was ist dann mit dem Speicher. Räumt Delphi trotzdem auf oder hab ich ein Speicherleck??
Ein 'TForm.Close' macht einen 'Release'. Bisher dachte ich damit wäre alles aus dem Speicher raus. Jetzt musste ich mit Erstaunen feststellen, dass dem nicht so ist.
  Mit Zitat antworten Zitat