Bonjour,
je suis face à un sale problème (c'est la série...) : soit des fichier image parfois un peu mal fichus qui font crier mon programme ainsi que l'aperçu de l'OpenPictureDialog, donc c'est pas mon code, ouf !
(Une histoire d'invalid pointer ou similaire, mais le fichier s'affiche pourtant bien avec d'autres outils, aussi bien sous XP que sous Debian...)
Je me suis dit : tu vas blinder le truc avec un bloc
Ça fonctionnerait mais il doit se passer des choses bizarres dans le code du composant utilisé car une fois le ménage fait, je ne peux pas ouvrir d'autres images, mon programme freeze,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 try OuvertureFichier(filename); except ShowMessage('Ooops...'); Ménage; // restauration du curseur d'origine, etc. Exit; end;
Qu'à cela ne tienne, j'ai donc décidé d'aller voir comment ça se passait dans le programme de démo fourni avec le compo mais là, c'est violent, je ne vois pas mon ShowMessage('Ooops...');, j'entraperçois pendant une fraction de seconde un message me parlant d'Access Violation puis le programme disparaît des écrans sans autre forme de procès...
Conclusion : Try Except End n'est pas aussi performant et efficace qu'il y parait.
Question : comment bien gérer ça ?
Démo rapide :
Au clic :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 function Calcul: double; var a,b: double; begin a := 5; b := 0; try result := a / b; except ShowMessage('Ooops...'); result := 0; end; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(FloatToStr(Calcul)); end;
Pourquoi ne vois-je pas mon ShowMessage ?
Pourquoi ne vois-je pas le ShowMessage principal avec le zéro que je force ?
Partager