Мне действительно интересно - зачем тебе ставить
readln;
строка после чтения некоторого значения с клавиатуры в переменную? Например,
repeat
writeln('Make your choise');
read(CH);
if (CH = '1') then begin
writeln('1');
end;
{ ... }
until CH = 'q';
Если вы запустите следующий код и нажмете «1» на клавиатуре, вы получите вывод типа
1
Make your choise
Make your choise
Make your choise
С другой стороны, если вы добавите это "readln;" линия, все отлично работает:
repeat
writeln('Make your choise');
read(CH);
readln;
if (CH = '1') then begin
Writeln('1');
end
until CH = 'q';
Мое единственное предположение состоит в том, что вызов readln без аргументов завершает процесс чтения ввода с клавиатуры. Но если это так, почему функции чтения / чтения не могут сами прекратить чтение ввода, чтобы избежать такой неуклюжести?