Une unité (Unit) peut également contenir une section initialization (d’initialisation) et une section finalization (de finalisation).
Ces deux blocs de code s’exécutent automatiquement respectivement au lancement et à la fermeture du programme.
initialization : s’exécute au lancement du programme, lorsque l’unité est chargée en mémoire, avant le code principal. Plusieurs unités exécutent leurs sections d’initialisation séquentiellement dans l’ordre où elles sont référencées.
finalization : s’exécute juste avant la fermeture normale du programme et la destruction du processus ; son ordre d’exécution est l’inverse de celui de l’initialisation.
Rôles
Initialization : enregistrer les classes, ouvrir les connexions fichiers globales / bases de données, initialiser les variables globales, enregistrer les composants ;
Finalization : libérer la mémoire, fermer les descripteurs, sauvegarder les configurations, désenregistrer les ressources pour éviter les fuites de mémoire.
Modifions le fichier unité PAS du cours précédent : 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;
// Section d'initialisation : exécutée automatiquement quand le programme charge cette unité
initialization
WriteLn('Hello world!');
// Section de finalisation : exécutée automatiquement avant la fermeture normale du programme
finalization
WriteLn('Goodbye world!');
end.Langage du code : JavaScript (javascript)
Nous avons simplement ajouté ces deux sections en bas du fichier

Résultat de l’exécution

Le dernier message « Goodbye world » ne s’affichera qu’après avoir appuyé sur Entrée (au moment où le programme se termine).
Initialization et finalization