Una Unidad (Unit) también puede contener un apartado de initialization (inicialización) y un apartado de finalization (finalización).
Estos dos bloques de código se ejecutan automáticamente al iniciar y al cerrar el programa respectivamente.
initialization: Se ejecuta al lanzar el programa y cargar la unidad en memoria, antes que el código principal. Varias unidades ejecutan sus apartados de inicialización en secuencia según el orden de referencia.
finalization: Se ejecuta justo antes del cierre normal del programa y la eliminación del proceso; su orden de ejecución es el inverso al de la inicialización.
Funciones
Initialization: Registrar clases, abrir archivos globales / conexiones de base de datos, inicializar variables globales, registrar componentes;
Finalization: Liberar memoria, cerrar manejadores, guardar configuraciones, anular el registro de recursos para evitar fugas de memoria.
Vamos a modificar el archivo PAS de unidad de la lección anterior: 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;
// Apartado de inicialización: se ejecuta automáticamente cuando el programa carga esta unidad
initialization
WriteLn('Hello world!');
// Apartado de finalización: se ejecuta automáticamente antes del cierre normal del programa
finalization
WriteLn('Goodbye world!');
end.Lenguaje del código: JavaScript (javascript)
Solo hemos añadido estos dos apartados al final del archivo

Resultado de ejecución

El último mensaje «Goodbye world» solo se ejecuta tras pulsar la tecla Intro (cuando el programa va a finalizar).