Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Игнор Ошибок

Автор: SkyBoy 1.07.2007 10:04

как сделать так, чтобы игнорировались ошибки и дос не вылетал??
вот например, если a:integer; то при попытке readln (a) он сразу вылетит нафиг. Как сигнорировать эту ошибку и возвратится к чтению переменной?

Автор: Bokul 1.07.2007 12:03

Вот так, например:


var a:integer;
begin
writeln('Enter an integer value');
repeat
{$I-}
readln(a);
{$I+}
until IOResult=0;
writeln('Thank you');
readln;
end.


Автор: klem4 1.07.2007 15:13

еще как вариант всегда изначально считывать строку, и уже потом, переводя ее в число с помощью val смотреть код ошибки, если он не нулевой, запрашивать повторный ввод.

Автор: volvo 1.07.2007 16:03

Цитата
Вот так, например:
ты можешь получить совсем не то, что хотел... Запусти свою программу, и попробуй ввести 123456 (под TP, разумеется...) И посмотри, что было занесено в переменную A...

Так что, самый надежный вариант -
Цитата
изначально считывать строку
(на форуме был пример реализации "защиты от дурака" подобным образом, так что http://forum.pascal.net.ru/index.php?act=Search&f=11)

Автор: SkyBoy 1.07.2007 17:16

хорошо, объясните мне, пожалуйста, что такое {$I-} и {$I+} !

Автор: volvo 1.07.2007 17:33

Читать здесь: FAQ -> http://forum.pascal.net.ru/index.php?s=&showtopic=3895&view=findpost&p=34541

Автор: SkyBoy 2.07.2007 13:45

спасибо good.gif