32 Глава I

В поле Name содержится полный путь к файлу в формате ASCIIZ. В этом формате строка определяется как цепочка символов, заканчивающаяся символом #0.

Четыре поля типа Pointer в записи TextRec имеют следующий смысл:

Open.Fu.nc — адрес функции, получающей управление при открытии текстового файла;

CloseFunc — адрес функции, вызываемой при закрытии текстового файла;

InOutFunc — адрес функции, активизируемой в момент физического обращения к устройству для записи или чтения информации;

FlushFunc — адрес функции, осуществляющей «выталкивание»

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

type

FuncType = Function (var F: TextRec): Integer;

Значение, возвращаемое функцией, зависит от успешности выполнения соответствующей операции и равно нулю, если операция прошла успешно.

Совокупность всех четырех функций определяет драйвер текстового устройства.

Назначение стандартным файлам Input и Output пользовательского драйвера заключается в установке соответствующих адресов в поля-указатели записей TextRec. Если Вы захотите назначить свой драйвер произвольному текстовому файлу, Вам понадобится разработать свою процедуру Assign. В ходе ее выполнения помимо установки адресов функций в поля—указатели, Вам нужно будет также обнулить имя файла, присвоив Name [0] := #0. Кроме того, в поле Mode необходимо поместить значение fmClosed, в BufSize — размер буфера, а в BufPtr — его адрес.

OpenFunc

Функция OpenFunc вызывается стандартными процедурами Reset, Rewrite и Append и предназначена для осуществления всех необходимых подготовительных действий для работы с конкретным файлом. Эта функция всегда вызывается первой, до вызова любой другой функции драйвера. Анализируя поле Mode, она может определить режим работы открытого файла и соответствующим образом установить значение поля InOutFunc, связав его с процедурой чтения или записи информации. Если функция вызывается из процедуры Append, т.е. файл открывается одновременно /ууя чтения и записи данных, поле Mode содержит значение fmInOut. В этом случае процедура должна изменить значение этого поля на fmOutput перед передачей управления в вызывающую программу.

InOutFunc

Функция InOutFunc вызывается стандартными процедурами Read, ReadLn, Write, WriteLn, EOF, EOLn, SeekEOF, SeekEOLn и Close.