Alors voici le code coupable dans Delphi 7 - Sans Patch, je testerais une machine patchée pour rigoler ...
ce code est lancée dans toutes nos applications, parfois le Free provoquait une Exception en RunTime, qui ne pouvant se dérouler correctement provoque une RunTime Error 216, l'exception se délenchant loin dans le code, solution du pauvre..., un OutputDebugString pour constater l'Erreur dans le Journal d'Evènement de Delphi en Debugging ... mais pas chez les clients ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 finalization try SingletonBidule.Free; except on E: Exception do OutputDebugString(PChar(Format('uBidule finalization - Erreur %s, Message %s', [E.ClassName, E.Message]))); end; end;
Ce code compile très bien pour générer un Exe ... mais il ne compile pour un DPK
voici, le code qui compile :
Eh oui, magique non, juste un retour charriot, et pour nous éviter la même mésaventure (outil de formattage de source qui risque de remettre un retour charriot donc soucis), j'ai préféré transformé le code en ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 finalization try SingletonBidule.Free; except on E: Exception do OutputDebugString(PChar(Format('uBidule finalization - Erreur %s, Message %s', [E.ClassName, E.Message]))); end; end;
le plus drôle, c'est que le Retour Charriot ne pose problème qu'avec la construction "on E: Exception do" mais pas pour le reste !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 finalization try SingletonBidule.Free; except OutputDebugString(PChar(Format( 'uBidule finalization - Erreur %s, Message %s', [Exception(ExceptObject()).ClassName, Exception(ExceptObject()).Message]))); end; end;
Voilà, c'était l'étrangeté du Jour !
Partager