Initialization und finalization

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).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert