Eine Unit kann zudem einen Initialisierungsabschnitt (initialization) und einen Abschlussabschnitt (finalization) enthalten.
Diese beiden Codeblöcke werden automatisch ausgeführt, wenn das Programm startet bzw. beendet wird.
initialization: Wird beim Start des Programms ausgeführt, sobald die Unit in den Speicher geladen wird – noch vor dem Hauptprogrammcode. Mehrere Units führen ihre Initialisierungsabschnitte nacheinander in der Reihenfolge ihrer Einbindung aus.
finalization: Wird unmittelbar vor der regulären Programmbeendigung und dem Zerstören des Prozesses ausgeführt; die Ausführungsreihenfolge ist zur Initialisierung umgekehrt.
Aufgaben
Initialization: Klassen registrieren, globale Datei-/Datenbankverbindungen öffnen, globale Variablen initialisieren, Komponenten registrieren;
Finalization: Speicher freigeben, Handles schließen, Konfigurationen speichern, registrierte Ressourcen abmelden, um Speicherlecks zu vermeiden.
Wir bearbeiten die Unit-PAS-Datei aus der vorherigen Lektion: MyUnit.pas
unit MyUnit;
{$ifdef FPC}
{$mode objfpc}{$H+}{$J-}
{$endif}
interface
procedure MyProcedure(const A: Integer);
function MyFunction(const S: string): string;
implementation
procedure MyProcedure(const A: Integer);
begin
WriteLn('A + 10 is: ', A + 10);
end;
function MyFunction(const S: string): string;
begin
Result := S + 'strings are automatically managed';
end;
// Initialisierungsabschnitt: Läuft automatisch, wenn das Programm diese Unit lädt
initialization
WriteLn('Hello world!');
// Abschlussabschnitt: Läuft automatisch vor regulärem Programmende
finalization
WriteLn('Goodbye world!');
end.Code-Sprache: JavaScript (javascript)
Nur diese beiden Abschnitte wurden am unteren Ende hinzugefügt

Ausgabeergebnis

Die letzte Zeile „Goodbye world“ wird erst ausgeführt, nachdem die Eingabetaste gedrückt wurde (das Programm soll beendet werden).