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

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

Форум «Всё о Паскале» _ Задачи _ Обработка ошибок ввода вывода

Автор: m0lex 12.12.2006 17:57

Вообщем такая проблема... Программа запрашивает у пользователя ввести переменную integer (Кол-во записей в фаиле) При вводе не численного значения прога вылетает, а мне не надо что бы так было. Пробовал с {$I-}{$I+} ничего не выходит... подскажите пожалуста ошибку.
Вот в этих 2-ух процедурах:


Procedure nov;
Var
j:integer;
a:integer;
Begin

Name_file;
assign(trains,name);
rewrite(trains);
write('Введите количество пунктов назначения: ');
readln(a);
for j:=1 to a do Vvod;
close(trains);
writeln;

end;

Procedure dobav;
Var
j:integer;
k:integer;
Begin

Name_file;
assign(trains,name);
{$I-}
reset(trains);
{$I+}
if ioresult=0 then
begin
seek(trains,FileSize(trains));
write('Введите количество записей: ');
readln(k);
for j:=1 to k do Vvod;
writeln('В новом фаиле ',FileSize(trains),' записей');
close(trains);
end
else writeln('Фаил '+name+' несуществует');
writeln;
end;




Вот весь исходник: molex.hotbox.ru/PROG.PAS

Автор: Malice 12.12.2006 18:05

Вводи не число, а строку, потом проверяй - является ли введенное числом (функция val).

Автор: мисс_граффити 12.12.2006 18:38

или оформи так же, как открытие файла...

Автор: m0lex 12.12.2006 18:40

Ок... спасибо, щас попробую, а есть еще какиенибудь способы, просто спросить могут...

=>или оформи так же, как открытие файла...
а это как?

Автор: m0lex 12.12.2006 19:06

Что то с val никак не могу разобраться( не могли бы вы показать на одной из моих процедур...

Автор: Malice 12.12.2006 19:14

Типа того,

repeat
readln (s);
val (s,a,code);
until code=0;

т.е. если code=0, то все ок, иначе повтор ввода.

Автор: m0lex 12.12.2006 19:26

Огромное спасибо!!! smile.gif разобрался!!!
завтра здача курсовой... надеюсь все будет хорошо!
спасибо мисс_граффити и Malice!
тема закрыта...