Finalize

Syntax:
procedure Finalize(const aArray: Array of String);


Beschreibung:

Die Prozedur deinitialisiert eine dynamisch zugewiesene Variable.
Finalize sollte nur in Delphi-Quelltext verwendet werden, in dem eine dynamisch erstellte Variable nicht mit der Prozedur Dispose freigegeben wird.
Der von dynamische Arrays belegte Speicher kann mit der Prozedur Dispose nicht freigegeben werden. Dynamische Arrays müssen dazu an Finalize übergeben werden.


Beim Freigeben von globalen Variablen, lokalen Variablen, Objekten und dynamischen Variablen mit Dispose generiert der Compiler Programmcode, um alle in der Variablen enthaltenen langen Strings, Varianten und Schnittstellen zusammen mit der Instanz zu finalisieren.


Wenn auf eine dynamische Variable folgende Bedingungen zutreffen


Die Variable wird nicht mit der Standardprozedur Dispose (sondern z.B. mit FreeMem) freigegeben.
Die Variable enthält lange Strings, Varianten und Schnittstellen, die nicht alle leer sind bzw. den Wert Unassigned haben


Finalize setzt einfach alle langen Strings auf einen leeren Wert und alle Varianten und Schnittstellen auf Unassigned und sorgt somit für die ordnungsgemäße Freigabe des betreffenden Speichers.


Werden mehrere Variablen in einem zusammenhängenden Speicherblock freigegeben (z.B. ein dynamisches String-Array), kann der optionale Parameter Count angegeben werden, um alle Variablen in einer Operation zu deinitialisieren.


Enthält die als Parameter an Finalize übergebene Variable keine langen Strings, Varianten oder Schnittstelle entfernt der Compiler den Aufruf und generiert keinen Code.
Beispiel: