Avec Lazarus 1.4.4 et 1.2.6 sous Windows 7 64 bits et cible 32 bits. Un problème différent existe sous Kubuntu.
J'ai isolé le code qui cause problème. Il suffit de placer un seul bouton sur une TForm avec ce code qui de manière délibérée va diviser par 0.
Si on exécute le fichier exécutable en en cliquant deux fois dessus, il fonctionne normalement en rapportant un EDivByZero dans le dernier ShowMessage. Le problème est quand on exécute dans l'IDE, il rapporte deux fois un message d'erreur qui indique le contenu de la ligne de code, i:= j div k mais si on essaie d'aller plus loin, l’exécutable plante et Windows se met à la recherche d'une solution.
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
18
19
20
21 procedure TForm1.Button1Click(Sender: TObject); Var i,j,k : integer; begin try j:=3; k:=0; i:= j div k; ShowMessage(IntToStr(i)); Except on E :Exception do ShowMessage('Exception '+E.ClassName+' '+E.Message); end; end;
Sous Kubuntu, le logiciel s’exécute correctement dans l'IDE mais il indique une erreur 207, Invalid floating point operation ce qui est incompréhensible par ce que ce code n'utilise que des nombres entiers. L’exception est EInvalidOp Invalid floating point operation au lieu de EDivByZero ce qui est incompréhensible. On ne peut pas écrire une fois et compiler partout si les exceptions ne sont pas nommées de manière consistante.
J'ai certainement raté quelque chose mais quoi?
Partager