Паскаль. Строки.

Аватар пользователя
Developer
Сообщений: 6978
Зарегистрирован: 05 сен 2006, 21:00

Паскаль. Строки.

Сообщение Developer » 02 апр 2009, 12:14

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+} в код программы нужно записать знак доллара...
Последний раз редактировалось Developer 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Developer
Сообщений: 6978
Зарегистрирован: 05 сен 2006, 21:00

Паскаль. Строки.

Сообщение Developer » 02 апр 2009, 12:25

Ho, чтобы использовать такую возможность, нужно подключить стандартный модуль, написав сразу под заголовком программы ещё одну строчку:

Код: Выбрать все

Program Prokatilo;
Uses CRT, Dos;
........
.......
Begin
.......
End.
Последний раз редактировалось Developer 30 ноя 2019, 09:39, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 9 гостей