Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование - 09 - Файлы.doc
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
235.01 Кб
Скачать

9.5 Файлы без типа

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

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

Формат описания:

Var

имя_переменной_файла:File;

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

Процедуры Assign,ReSet,ReWrite,Seek,Close,Erase,ReNameи функцииEoF,FilePos,FileSize,IOResult, которые были рассмотрены ранее в связи с обработкой типизованных файлов, применяются и для работы с файлами без типа. Однако при этом процедурыReSetиReWriteмогут иметь дополнительный параметр:

Procedure ...

ReSet ( var F [ ; Size : Word ] ) ;

ReWrite ( var F [ ; Size : Word ] ) ;

Этот параметр Sizeопределяет размер пересылаемой информации в байтах. Если длина не указана, по умолчанию принимается размер в 128 байт.

Таким образом, при работе с файлами без типа доступны все процедуры и функции, доступные при работе с типизованными файлами, за исключением процедур ReadиWrite. ПроцедурыReadиWriteзаменяются высокоскоростными процедурами BlockRead иBlockWrite соответственно.

Procedure ...

BlockRead ( var F : File ; var Buf ; N : Word [ ; var Result : Word ] ) ;

из файла, с которым связана файловая переменная F, читаютсяNили менее (если при чтении будет достигнут конец файла) компонент и помещаются в буферBuf(Buf— переменная подходящего размера). Необязательный параметрResultвозвращает фактическое количество прочитанных компонент. Максимальный размер переносимой информации равенN* Size(см. процедурыReSetиReWrite) и не должен превышать 65535 байт. После выполнения процедуры указатель текущей компоненты файла перемещается на соответствующее количество прочитанных компонент.

BlockWrite ( var F:File;var Buf; N :Word[; var Result :Word ] ) ;

в файл, с которым связана файловая переменная F, записываютсяNили менее (если в процессе записи будет до конца заполнен диск) компонент из буфераBuf. Необязательный параметрResultвозвращает фактическое количество записанных компонент. Максимальный размер переносимой информации равенN* Size(см. процедурыReSetиReWrite) и не должен превышать 65535 байт. После выполнения процедуры указатель текущей компоненты файла перемещается на соответствующее количество записанных компонент.