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

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

Форум «Всё о Паскале» _ Теоретические вопросы _ Проверка файла в директории

Автор: ApTeMoHnv 22.04.2009 3:31

В общем, суть такая. Есть игра, в которой должна быть функция сохранения/загрузки. Реализовал я это через массивы и вписывания/выдирания чисел из/в файла.
Перед игрой, он спрашивает, хотим ли мы загрузить предыдущую игры (те числа, которые впишутся в переменные).
Если такой уже файл есть, то всё понятно. Но что делать, если игрок первый раз зашёл в игру, но всё-равно нажал "Да", хотя такого файла ещё не существует? Как определить, есть ли такой файл с определённым именем в папке, где находится игра? И как создать через Паскаль, если его нету?
Спасибо за внимание

Автор: volvo 22.04.2009 4:02

Цитата
Как определить, есть ли такой файл с определённым именем в папке, где находится игра? И как создать через Паскаль, если его нету?
Отключить обработку ошибок ввода/вывода и попробовать открыть файл для чтения. Если файла нет, IOResult будет отличен от 0, значит, создавать новый файл:

Assign(f, 'test.dat');
{$I-} Reset(f); {$I+} { <--- Пытаемся открыть существующий }
if IOResult <> 0 then begin { <--- не 0? Не получилось открыть файл, ошибка }
Rewrite(f); { Создаем новый файл }
end;
В результате у тебя будет открыт файл в любом случае (ну, если делать совсем правильно - надо проверять номер ошибки при Reset-е. Файла нет - это IOResult = 2 (File not Found), другие значения сигнализируют о других причинах того, что файл не был открыт. Также надо еще обрабатывать возможную ошибку при создании нового файла: у пользователя может не быть прав на это, тогда вылетит ошибка, может элементарно не хватить места, и т.д.) - или новый (пустой), или ранее существующий.