Initialization et finalization

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *