RunError/Runtime-error handler ?
Bonjour touti li moundi,
Une question de fiabilité : existe -til un moyen de définir un traitement personalisé de RunError ? Est-il possible de définir un handler spécifique, ou n'y at-il pas d'autres moyen que AddExitProc ?
AddExitProc ne convient pas tout à fait, parce que je suis pas certain que l'on puisse tester si l'arrêt du programme est dût à RunError ou à Halt/Exit. Et de plus, un handler passé à AddExitproc risque d'être appelé aprés le traitement par défaut de RunError. Sans compter qu'en plus, si un RunError se produit pendant l'initialisation d'une unit, alors il se peut qu'un handler censé être fixé par AddExitProc n'ait pas encore été mis en place.
Dans l'idéal, pour être certain que le bon handler soit toujours appelé, il faudrait même qu'il puisse être spécifié dans une directive de compilation (au niveau d'une unit ou du programme principal).
Mais peut-être n'y a t-il pas d'autres solutions à cela que de compiler une version personalisée de la unit System ?
Je sais bien qu'il y a d'autres choses à faire un premier mai... mais que voulez-vous, il n'y a pas de muguets dans les bois chez moi :cry: (j'ai déjà cherché).
Allez... bon week-end prolongé à tous/toutes :D
Détail technique pour la recompilation de System.pp et ObjPas.pp
Ah, je me sent quand même beaucoup plus léger : j'ai modifié System.inc, pour que l'unité System sache si l'application a put être initialisé, et pour qu'un handler spécifique soit appelé en cas d'echec de l'initialisation de l'application. C'est beaucoup plus propre comme ça (d'où mon sentiment de légéreté).
Un petit détail important (une erreur à ne pas faire) : pour recompiler System.pp, il faut utiliser les options « -Us » et « -Ur » (attention à la casse des options). L'option « -Ur » n'est pas obligatoire, mais recommandée. L'option « -Us », elle, est obligatoire, mais ne doit pas être utilisée pour la compilation des autres unités.
L'erreur à ne pas faire, et de ne pas utilisé « -Us » pour compiler l'unité ObjPas.pp (bien que ObjPas soit une sorte d'unité system... qui override l'unité System standard). Aprés avoir recompilé System.pp, la recompilation de ObjPas.pp est nécéssaire si vous travaillez en mode ObjFpc ou en mode Delphi.
Si quelqu'un(e) rencontre des problèmes en modifiant System.pp ou System.inc, ou en les recompilant, n'hésitez pas à demander ici :)
Portez vous bien :)