Объявление файловой переменной задает только тип компонентов файла. Файлы становятся доступны программе только после особой процедуры открытия файла. Эта процедура заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него.
Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре AssignFile.
Описание процедуры AssignFile выглядит следующим образом:
Имя файла задается согласно принятым в Windows правилам. Оно может быть полным, т. е. состоять не только непосредственно из имени файла, но и включать путь к файлу (имя диска, каталогов и подкаталогов).
Ниже приведены примеры вызова процедуры AssignFile:
AssignFile (f, 'a:\result.txt');AssignFile (f, '\students\ivanov\korni.txt'); fname:='otchet.txt'; AssignFile (f,fname); Следующим обязательным действием при работе с файлами является инициализация файла (определение направления передачи данных). В Delphi можно открыть файл для чтения, для записи, для чтения и записи информации.
Reset (F); // F – файловая переменная, связанная с уже существующим файлов
Reset (F; RecSize);При выполнении этой процедуры файл подготавливается к чтению информации. В результате специальная переменная-указатель, связанная с этим файлом, будет указывать на начало файла, т.е. на компонент с порядковым номером 0.При вызове процедуры Reset возможны две ситуации, когда возникают ошибки выполнения программы, которые приводят к возникновению исключительной ситуации:1) Если делается попытка инициировать чтение из несуществующего файла. Чтобы проверить, существует ли файл, можно использовать стандартную функцию FileExists, которая возвращает True, если указанный при обращении к этой функции файл существует, и False – если не существует.begin If FileExists (FileName) then … // файл существуетelse … // файл не существуетend;2) Статус файла не соответствует режиму открытия (например, файл с атрибутом «только для чтения» нельзя открыть для записи). Чтобы избежать аварийного завершения программы, можно воспользоваться директивой компилятора {$I-}, которая отключает автоматический контроль ошибок ввода-вывода. В таком случае результат последней операции ввода-вывода возвращается стандартной функцией IOResult.При работе с нетипизированными файлами процедура Reset имеет дополнительный параметр RecSize типа Word, который определяет размер блока данных. Если размер блока данных не указывается, то он принимается равной 128 байт.
ReWrite (F);
ReWrite (F; RecSize);
При выполнении этой процедуры файл инициируется для записи информации. Однако данной процедурой нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл (если он был) уничтожается и никаких сообщений об этом в программу не передается. Новый файл подготавливается к приему информации и его указатель принимает значение 0. Иными словами, создается новый файл.При работе с нетипизированными файлами процедура ReWrite имеет дополнительный параметр RecSize типа Word, который определяет размер данных.
Append (F);
Эта процедура инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура Append применима только к текстовым файлам, т.е. их файловая переменная должна иметь тип TextFile. Процедурой Append нельзя инициировать запись в типизированный или нетипизированный файл. Если текстовый файл ранее уже был открыт с помощью процедуры Reset или ReWrite, использование процедуры Append приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.
EOF (F);
Данная функция тестирует конец файла и возвращает True, если файловый указатель стоит в конце файла. При записи это означает, что очередной компонент будет добавлен в конец файла, при чтении – что файл исчерпан. Значение функции EOF равно False, если прочитанный элемент данных не является последним в файле, т. е. возможно дальнейшее чтение.
Значение функции EOF можно проверить сразу после открытия файла. Если при этом оно окажется равным True, то это значит, что файл не содержит ни одного элемента данных, т. е. является пустым (размер такого файла равен нулю).
CloseFile (F); – процедура закрытия файл.
Rename (F, NewName); – процедура переименования файла, NewName – строковое выражение, содержащее новое имя файла. Перед выполнением процедуры необходимо закрыть файл.