597400 писал(а):Source of the post Error 106: Invalid numeric format
a на другой стороне Runtime error
и меняй-не меняй read на readln и обратно-ничего не помогает.
Если при вводе c клавиатуры вместо цифры (целого числа) введён символ, то и появляется сообщение об ошибке: "Error 106: Invalid numeric format".
Чтобы предотвратить это, опытные программисты пишут такой код, проверяя правильность ввода данных:
Код: Выбрать все
Repeat
Error:=0; {SI-} Colors(4,3); GoToXY(x2,y2);
CursorOn; Read(Pr); CursorOff;
If (Pr<0) Or (Pr>5) Or (Pr>rc) Or (IOResult<>0)
Then Trtmnt
Else ClrEol; {/SI+}
Until (Pr>=0) And (Pr<=5) And (Pr<=rc) And (Error=0);
Bo фрагменте, который я взял из своей какой-то программы, в цикле Repeat-Until перед вводом числа Pr отключется проверка компилятором ошибки ввода {SI-}, потом производится ввод Read(Pr) и проверяется возвращаемое значение функции IOResult. Если оно не равно нулю, цикл ввода и проверки не завершается (при этом раздаётся звуковой неприятный сигнал, курсор возвращается на прежнюю позицию GoToXY(), строка за ним стирается - это прописано в процедуре Trtmnt) и оператору предлагается повторить правильный ввод числа.
Если ввод выполнен правильно, проверка включается {SI+} и цикл завершается успешно.
Примечание: вместо символа S в {SI-} и {SI+} в код программы нужно записать знак доллара...