Cela m'intéresse vraiment - pourquoi faut-il que vous mettiez
readln;
après avoir lu une valeur du clavier dans une variable ? Par exemple,
repeat
writeln('Make your choise');
read(CH);
if (CH = '1') then begin
writeln('1');
end;
{ ... }
until CH = 'q';
Si vous exécutez le code suivant et que vous appuyez sur la touche "1" du clavier, vous obtiendrez une sortie du type suivant
1
Make your choise
Make your choise
Make your choise
En revanche, si vous ajoutez la ligne "readln ;", tout fonctionne parfaitement :
repeat
writeln('Make your choise');
read(CH);
readln;
if (CH = '1') then begin
Writeln('1');
end
until CH = 'q';
Je ne peux que supposer que le fait d'appeler readln sans arguments met fin au processus de lecture de l'entrée clavier. Mais si c'est le cas, pourquoi les fonctions read/readln ne peuvent-elles pas arrêter de lire les données elles-mêmes, pour éviter une telle maladresse ?