Если ваша программа использует какие-либо файлы данных, настроек и т.п., всегда есть вероятность, что при очередном запуске нужного файла на диске не окажется – то ли пользователь стер по ошибке, то ли вирус потрудился. Если такую ситуацию не предусмотреть, программа "свалится" с выдачей противного сообщения " Access Violation", а автора программы и его маму будут поминать нехорошими словами.
Крайне желательно перед открытием файла проверять, существует ли он на диске. Делается это очень просто:
для файла:
FileExists(имя_файла)
для директории:
DirectoryExists(имя_директории);
Проверка может выглядеть, например, так:
IF NOT(FileExists
(ExtractFilePath(Application.ExeName)+'data.dat') THEN
Обратите внимание на конструкцию ExtractFilePath(Application.ExeName). В свойстве Exename глобального объекта Application всегда хранится имя exe-файла нашей программы с полным путем к нему. Функция ExtractFilePath извлекает только путь к exe-файлу. Таким образом, всегда можно узнать, из какой директории запущена программа, и где искать необходимые для ее работы файлы.
У файла есть много параметров – размер, дата и время создания, атрибуты. Их можно "выковыривать" по одному при помощи кучи функций типа GetFileSize, GetAttr и т.д., которые остались в Delphi как тяжелое наследство старого Паскаля. Но есть способ лучше! В языке предусмотрен специальный тип данных TSearchRec для хранения всех сведений о файле в одной переменной: