Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2011, 18:45   #1
pandaaaaa
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 27
По умолчанию Работа над ошибками

Думаю, что текст задачи не важен.
Главное, что мне нужно - это "защититься" от ошибок при вводе файла.
То есть, чтобы при вводе файла типа "итмгоиу.лол" программа не завершала работу, а выводила соответствующее сообщение.
Помогите с этим справиться. Писал на pascal ABC.
Код:
procedure pr1(var x:text);
var
a:string;
begin
writeln('input file path ');
readln(a);
assign(x,a);
reset(x)
end;


var
f:text;
n:integer;
a:string;
d,c:char;
begin
 pr1(f);
 n:=0;
 c:=' ';
 while not EoF(f) do begin
 d:=c;
 read(f,c);
 if not (c in [' ',#10,#13]) and (d in [' ',#10,#13]) then inc(n);
 end;
 close(f);
 writeln('file contains ',n,' words')
 end.
pandaaaaa вне форума Ответить с цитированием
Старый 31.12.2011, 20:29   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,374
По умолчанию

Не знаю как в АВС, но возможно, что и в нем есть директивы компиляции.
В их числе есть и такая {$I+} и {$I-} - проверка ошибок ввода/вывода.
Такую директиву {$I+} надо включить перед открытием файла - reset(fh).
Если файла нет, то системная переменная IOResult не равна нулю.
Это можно использовать для контроля правильности ввода имени файла.
Если ввод состоялся, то {$I-} выключает контроль.
Код:
procedure pr1(var x:text);
var a:string;
begin
   writeln('input file path ');
   readln(a);
   assign(x,a);
{$I+}
   reset(x);
   If IOResult <> 0 then {вытворяем что нам надо};
{$I-}
end;
Как то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 01.01.2012, 20:53   #3
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Цитата:
Не знаю как в АВС, но возможно, что и в нем есть директивы компиляции.
в ABC есть FileExists
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ошибками DENIS_1992 Общие вопросы Delphi 0 07.06.2011 03:10
Работа над массивом! SKyzZz Общие вопросы C/C++ 3 15.02.2011 19:42
Работа с ошибками WitaliG Помощь студентам 6 04.01.2011 23:31
Работа над графикой misher Общие вопросы Delphi 3 15.06.2010 15:38
Работа над ошибками, удаление Linux begemotikdin Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 5 30.11.2008 01:16