Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алг яз Лаб 6(I-ИСТ).doc
Скачиваний:
9
Добавлен:
05.11.2018
Размер:
244.74 Кб
Скачать

2.3. Нетипизированные файлы

Нетипизированные файлы позволяют записывать на диск и считывать с диска произвольное количество байтов памяти. Операции обмена с нетипизированными файлами осуществляются с помощью процедур BloсkRead и BlockWrite. Кроме того, вводится расширенная форма процедур Reset и Rewrite. В остальном принципы работы остаются такими же, как и с типизированными файлами.

Перед использованием файла в программе необходимо объявить файловую переменную. Объявление для нетипизированных файлов:

Var f: File;

Далее логический файл должен быть связан с физическим с помощью процедуры Assign (см. п. 2.1.2). Затем файл должен быть открыт процедурой Reset или Rewrite, а после окончания работы закрыт процедурой Close (см. п. 2.1.6).

При открытии файла длина буфера устанавливается по умолчанию в 128 байтов. В языке Pascal предусмотрено изменение размера буфера ввода/вывода, для чего следует открывать файл расширенной записью процедур:

Reset(имя_файловой_переменной, размер_буфера);

или

Rewrite(имя_файловой_переменной, размер_буфера);

Параметр размер_буфера задает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значение буфера – 1 байт, максимальное – 64 Кбайтов.

Чтение данных из нетипизированного файла осуществляется процедурой:

BlockRead (имя_файловой_переменной,

переменная, количество_блоков [, количество_прочитанных_блоков]);

Эта процедура осуществляет за одно обращение чтение в переменную, количество_блоков устанавливает количество считываемых блоков за одну операцию вывода, определенных размером буфера. Значение третьего параметра не может быть меньше 1. За одно обращение нельзя прочесть больше, чем 64 Кб.

Необязательный параметр количество_прочитанных_блоков возвращает число блоков, прочитанных текущей операцией BlockRead.

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

Запись данных в нетипизированный файл выполняется процедурой:

BlockWrite ( имя_файловой_переменной,

переменная, количество_блоков

[, количество_прочитанных_блоков]);

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

Необязательный параметр количество_прочитанных_блоков возвращает число блоков, записанных успешно текущей операцией BlockWrite.

2.4. Дополнительные подпрограммы для работы с файлами

2.4.1. Переименование и удаление

Процедуры переименования и удаления применяются только к закрытым файлам.

Процедура

Rename(имя_файловой_переменной, новое_имя_файла);

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

Например:

{Связать переменную FI c файлом Phone.dat}

Assign(FI, 'Phone.dat');

{Переименовать Phone.dat в Abonent.dt}

ReName(FI, 'Abonent.dt');

Процедура Erase(имя_файловой_переменной); удаляет (стирает) с внешнего носителя физический файл, связанный с файловой переменной.

Например:

{Связать переменную FI c файлом Phone.dat}

Assign(FI, 'Phone.dat');

{Удалить Phone.dat}

Erase(FI);

Попытка переименования или удаления несуществующего файла вызовет прерывание выполнения программы.