Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст лекций.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
1.59 Mб
Скачать

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

Основные операции с файлами – чтение из файла и запись в него. Перед этим файл необходимо открыть, а после завершения работы с файлом его необходимо закрыть. Этой цели служат следующие процедуры:

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

открыть файл для чтения

(такой файл считается входным)

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

открыть файл для записи

(такой файл считается выходным)

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

закрыть файл

Процедура reset открывает существующий физический файл, который связан с файловой переменной. При открытии указатель текущей записи файла устанавливается в его начало (на первый элемент). Условно будем считать, что текущий элемент файла виден через так называемое «окно файла».

Если файл не существует (в той директории, которая указана в процедуре Assign), возникает ошибка времени выполнения, и программа аварийно завершается по инициативе операционной системы. Эту реакцию операционной системы (ее называют стандартной реакцией операционной системы) можно подавить, предоставив программе возможность самостоятельно отреагировать на ошибку (открытия).

Для этого в среде MS DOS используется специальная директива компилятора {$I-}, которая должна быть помещена до вызова процедуры reset. Она означает следующее: «выключить стандартную реакцию операционной системы на ошибку ввода/вывода». При этом факт ошибки регистрируется, но выполнение программы продолжается. Установить, успешно или неудачно выполнилась процедура открытия, можно воспользовавшись функцией IOResult, которая возвращает значение 0, если операция закончилась успешно, и ненулевое значение (код ошибки) в противном случае.

При чтении из файла полезна еще одна функция. Это функция EOF (от End Of File):

Frame145

Она возвращает значение FALSE, если «окно файла» указывает на имеющийся элемент, и значение TRUE, если «окно» вышло за пределы файла (за последний элемент его).

Процедура rewrite создает новый (пустой) физический файл. Если такой физический файл уже существует, он уничтожается, а вместо него создается новый пустой файл. При открытии «окно файла» устанавливается в позиции, в которую будет произведена запись первого элемента (в момент выполнения операции записи в файл).

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

10.5. Чтение и запись

Процедуры чтения и записи – применительно к операциям с файлами были приведены в разделе «Кодирование вычислительных операций». Тем не менее, повторно приведем их структуру:

read(<ф.п.>,<имя переменной>);

присвоить переменной значение, прочитанное из файла

write(<ф.п.>,<имя переменной>);

записать в файл значение

переменной

Здесь ф.п. – файловая переменная.

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

Еще одной полезной функцией является функция «количество записей в файле» - Filesize(<файловая переменная>) . Она может быть применена только для типизированных и нетипизированных файлов, и возвращает целое число типа longint (длинное целое), поскольку число записей файла может превышать МаксЦел, которое в Паскале равно 32767.

Ниже приведен пример, иллюстрирующий изложенный материал.

Frame146

Продолжение смотрите на следующей странице.

Frame147