Section courante

A propos

Section administrative du site

Procédures de sortie

L'unité SYSTEM met en oeuvre une variable «ExitProc:Pointer». . Elle pointe vers une procédure étant appelée lorsqu'un programme est sur le point de se terminer, quelle qu'en soit la cause. La variable ExitProc est lancé pour pointer vers le gestionnaire de sortie de SYSTEM, supprimant les interruptions installées avant la fin définitive. Si ce gestionnaire n'est pas appelé avant la fin du programme, vous demandez des problèmes. Les trappes installés pointeront vers du code inexistant après la fin du programme s'ils ne sont pas supprimés. Le pointeur ExitProc vous permet de prendre le contrôle avant la fin du programme, simplement en entrant votre propre procédure de sortie dans la chaîne de caractères. Votre procédure de sortie peut ensuite fermer des fichiers et effectuer d'autres tâches de nettoyage. Lorsque le gestionnaire ExitProc commence à fonctionner, il continue d'appeler le pointeur de procédure vers par ExitProc, jusqu'à ce que la dernière procédure (la propre sortie du SYSTEM) ait été appelée. Vous pouvez utilisez le système de gestionnaire de sortie de la façon suivante :

  1. Var OldExitProc:Pointer;
  2.  
  3. Procedure MyExitHandler;Begin
  4.  ExitProc:=OldExitProc;
  5.  { Nettoyage... }
  6. End;
  7.  
  8. Procedure Initialize;Begin
  9.  OldExitProc:=ExitProc;
  10.  ExitProc:=@MyExitHAndler;
  11. End;

Le gestionnaire de sortie doit restaurer la variable ExitProc en premier lieu. Toutes les erreurs se produisant avant la restauration de ExitProc mettront immédiatement fin au programme, ignorant l'exécution du gestionnaire de sortie des systèmes. Lorsque le gestionnaire de sortie démarre, il réinitialise le pointeur de pile sur HighStak. Sinon, un débordement de pile pourrait se produire.

Dernière mise à jour : Dimanche, le 19 avril 2020