Непонятная ошибка. Pascal

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Дело в том, что у меня возникает, по непонятной мне причине, ошибка - как только я вызываю процедуру assign для открытия файла на чтение, программа ничего не выполняет, разве что выдаёт ошибку Runtime error. Но происходит это лишь в том случае, когда файла, вызываемого процедурой assign, нет на диске (несуществует). Раньше было Path not found или File not found, а сейчас - непойму что. Заметил я это уже в скомпелированном *.exe-файле, когда вместо Runtime error с помощью IOResult он у меня выдавал Файл не найден.. Что случилось - понятия не имею.
Буду очень признателен если вы мне поможете. Спасибо.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

можно устроить процедуру создания файла через канал выхода

procedure CreateFile;
Assign(f, '*.txt'); ReWrite (f);
Close(f);
end;

процедура должа создать файл.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Причём здесь файл? Мне не нужно чтобы программа его создавала, а просто чтобы когда заданного файла нет на диске она выдавала "Файл несуществует".

Код: Выделить всё

procedure checking;
assign(f, direcrtoty); 
{$I-}
reset(f);
If IOResult<>0 then writeln('Файл не существует.');
If IOResult=0 then writeln('Файл найден как ',directoty);
{$I+}
readkey;
end.
Так вот, вместо того чтобы IOResult выдавал Файл не существует, он пишет Runtime error at ......
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Колядин Максим, вапче-то рекомендуется обрамлять директивой компилятора только один оператор 'reset'. И, если мне не изменяет память у тебя отработают оба условия, т.к. после первого обращения к функции IOResult её значение будет сброшено в 0, так что проверять надо через ELSE
Изображение
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Вы бы лучше мне сказали почему у меня ошибка возникает... а не то что рекомендуется обрамлять директивой компилятора только один оператор 'reset'. А на счёт else - спасибо! Хороший совет.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

У меня в таком варианте получается так (если без элса и директивы компилятора оставлять на месте): если файл существует - выдается сообщение об успехе, если нет - сначала о неудаче, потом об успехе. Ошибка не возникает. Turbo Pascal 7.0
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

в паскале есть функция поиска файла по диску... мм... блин, забыл как ее там, но точно помню было задание поиска pas-файла, там подключение модуля Dos, еще чего то, но ведь было...
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

вспомнил FindFirst(FileName, faArchives, DirInfo);
только я до сих пор не могу понять, что за faArchives и DirInfo.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Procedure FindFirst(Path : String; Attr: word; var F: TSearchRec);
Path – путь для поиска с маской; Attr- атрибуты искомых файлов; F- запись типа TsearchRec с результатами поиска.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Ответить