Thema: Delphi bereits freigegeben?

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: bereits freigegeben?

  Alt 9. Aug 2003, 00:56
Moin moin,

ob ein Objekt mit Free freigegeben wurde kannst Du nicht überprüfen, da mit Free die Resourcen freigegeben werden (hoffentlich alle ), die Variable aber weiterhin eine Adresse auf ein nun nicht mehr existentes Objekt enthält.
(Von der "brutal" Methode auf einen Bestandteil (Methode oder Eigenschaft) in einem try/except Block zuzugreifen, und im Falle einer Exception zu entscheiden, dass das Obekt nicht mehr existiert. Dies nur der Vollständigkeit halber erwähnt.)

Um ein Objekt so freizugeben, dass eine Überprüfung möglich ist, gibt es (ich glaube seit D4) die Prozedure FreeAndNil. Hiermit wird das Objekt freigegeben, und anschliessend, die Variable auf auf nil gesetzt, so dass dann die Abfrage

if ObjektVariable <> nil then ShowMessage('Objekt existiert'); möglich ist.

Ersetzten lässt sich FreeAndNil durch

Delphi-Quellcode:
ObjektVariable.Free;
ObjektVariable := nil;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat