Sans avoir testé l'idée :
if somme + 2000 <= High(integer) then
elle me paraît saugrenue (je pense qu'elle doit lêtre aussi pour Roland) car on retombe sur le problème initial, en fait au premier dépassement, la valeur de somme + 2000 sera négative et le test sera donc toujours positif. Une solution, bancale, consisterait à faire le même test en convertissant en réel, mais bon ça vaut ce que ça vaut ...
Mais lagareg devrait préciser son idée...
Ce problème de type provient sans doute d'un vieux compilo, type TurboPascal, c'est ça ?
Je pense à deux solutions :
- Passer à FreePascal, un peu plus moderne quand même, les entiers sont sur 4 octets, ta somme passe largement.
- changer le type Integer -> LONGINT (selon le cours : http://cyberzoide.developpez.com/info/turbo/chap4.php3, ça fait longtemps que j'ai pas travaillé avec TP).
Ce fil de discussion met bien en évidence le soin avec lequel il faut définir les types et structures de données et les faiblesses des programmes en général.
@+
Partager