Bonsoir,
dans un prog (trouvé je ne sais pas trop où, Codes-source je pense) que j'étudie en pas-à-pas parce que je ne comprends pas pourquoi il plante, j'arrive sur ce bloc, dans lequel les variables sont de type integer :
J'ai mis un point d'arrêt sur la ligne suivante, j'exécute et, une fois arrêté,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for m := -1 to 2 do ii := i_in + m;
je mets la souris sur m, l'infobulle me dit -1 puis
je mets la souris sur i_in, l'infobulle me dit aussi -1 (c'est une variable qui vient de plus haut)
Mais quand je mets la souris sur ii l'infobulle me dit 0 et là je tombe par terre (pendant que le programme plante)
Comment faire pour avoir -2 ?
L'unité a {$mode objfpc}{$H+}.
+++
Entre-temps, j'ai trouvé la réponse à ma question, il faut mettre des parenthèses partout, genre (ii) := (i_in) + (m); mais ça ne me rassure qu'à moitié car c'est un coup à se tromper, en oublier ou que sais-je.
N'y aurait-il pas un flag disant au compilo de gérer ça correctement ?
Car s'il faut passer en revue tous les codes qui sont stockés dans ma machine, ligne à ligne, une vie entière n'y suffira pas...
Merci,
EDIT :
Tant pis, je vais passer pour le dernier des imbéciles, mais j'ai voulu en avoir le cœur net et dans un autre projet tout simple, j'ai mis un bouton et dans le bouton ça :
En commentaire les résultats, corrects.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TForm1.Button2Click(Sender: TObject); var a,b,m: integer; begin b := -1; for m := -1 to 2 do begin a := b + m; ShowMessage(IntToStr(a)); // -2 -1 0 1 end; end;
Qu'est-ce qui peut bien clocher dans l'autre projet ?
Partager