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

- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Вы бы лучше мне сказали почему у меня ошибка возникает... а не то что рекомендуется обрамлять директивой компилятора только один оператор 'reset'. А на счёт else - спасибо! Хороший совет.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
У меня в таком варианте получается так (если без элса и директивы компилятора оставлять на месте): если файл существует - выдается сообщение об успехе, если нет - сначала о неудаче, потом об успехе. Ошибка не возникает. 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>
---------------------------------------------------------------------------
<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.
только я до сих пор не могу понять, что за 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>
---------------------------------------------------------------------------
<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 с результатами поиска.
Path – путь для поиска с маской; Attr- атрибуты искомых файлов; F- запись типа TsearchRec с результатами поиска.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...