Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч2.doc
Скачиваний:
15
Добавлен:
02.11.2018
Размер:
1.7 Mб
Скачать
      1. Назначение файла файловой переменной

Объявление файловой переменной задает только тип элементов файла. Для того чтобы программа могла выводить данные в файл или считывать данные из файла, необходимо связать файловую переменную с именем конкретного файла. Такая связь устанавливается с помощью процедуры AssignFile.

Обращение к этой процедуре выглядит так:

AssignFile ( <файловая переменная>, <имя файла>);

Имя файла задается в виде строки символов, согласно принятым в Windows правилам. Оно может быть полным, т. е. состоять не только непосредственно из имени файла, но и включать путь к файлу (имя диска, каталогов и подкаталогов).

Ниже приведены примеры вызова процедуры AssignFile:

AssignFile (f1, 'a:\result.txt') ;

AssignFile (f2, '\students\ivanov\komi .txt') ;

fname := 'otchet.txt') ;

AssignFile[ft,fname) ;

Обратите внимание, процедура AssignFile устанавливает связь между файловой переменной и именем файла и безразлична к тому, существует ли файл с указанным именем или нет.

      1. Открытие файла

Для того чтобы начать работу с файлом, его нужно “открыть”. При открытии файла устанавливается связь между файловой переменной и самим файлом. Существует два способа открытия типизированного файла.

Первый способ заключается в том, что файл создается заново, независимо от того, существовал он ранее или нет. Используя этот способ, нужно помнить, что если открываемый файл содержал какие-то данные, то они будут безвозвратно потеряны.

Реализуется такой способ открытия файла процедурой Rewrite.

Обращение к этой процедуре выглядит так:

Rewrite ( <файловая переменная>);

Ниже приведен пример вызова процедуры Rewrite:

Rewrite (f1) ;

Второй способ открытия файла, предполагает, что файл существует, и будет обрабатываться.

Реализуется такой способ открытия файла процедурой Reset.

Обращение к этой процедуре выглядит так:

Reset ( <файловая переменная>);

Ниже приведен пример вызова процедуры Reset:

Reset (f1) ;

Процедура Reset устанавливает файл в начало, поэтому эту процедуру часто применяют для уже открытых файлов с тем, чтобы начать обработку файла с начала.

Если попытаться с помощью процедуры Reset открыть несуществующий файл, то возникнет исключительная ситуация и выполнение программы будет прервано. Прерывания программы можно избежать, если воспользоваться конструкцией try … except … end.

Ниже приводится пример, в котором производится попытка открыть файл ’someFile.dat’ с помощью процедуры Reset, но если возникает исключительная ситуация, то такой файл создается с помощью процедуры Rewrite.

assignFile(f1,’someFile.dat’);

try Reset(f1); except rewrite(f1); end;

Однако в старых программах обработки файлов можно найти и другой способ обработки такой исключительной ситуации, в котором используется функция IOResult.

assignFile(f1,’someFile.dat’);

{$I-} Reset(f1) ; {$I+};

if IOResult <> 0 then rewrite(f1);

В приведенном примере для анализа успешности завершения операции связанной с вводом–выводом используется функция IOResult, которая возвращает ноль при успешном завершении операции. Особенность применения этой функции состоит в том, что на время выполнения контролируемой операции должен быть отключен контроль системы за выполнением контролируемой операции. Это делается с помощью директив компилятору {$I-} и {$I+}.