Значения файлового типа
Значения файлового типа представляются в виде записей. Типи- зированные и нетипизированные файлы занимают 128 байт, которые располагаются по следующей схеме:
type TFileRec = record Handle : word; { описатель } Mode : word; { режим } RecSize : word; { размер записи } Private : array[1..26] of byte; UserData : array[1..16] of byte; Name : array[0..79] of char; end;
Текстовые файлы занимают 256 байт со следующей схемой распо- ложения:
type TTextBuf = array[0..127] of char; TTextRec = record Handle : word; Mode : word; BufSize : word; Private : word; BufPos : word; BufEnd : word; BufPtr : ^TTextBuf; OpenFunc : pointer; InOutFunc : pointer; FlushFunc : pointer; CloseFunc : pointer; UserData : array[1..16] of Byte; Name : array[0..79] of Char; Buffer : TTextBuf; end;
В переменной Наndlе содержится номер описателя файла (когда файл открыт). Это значение возвращается DOS.
Поле Моdе считается равным одному из следующих значений:
const fmClosed = $D7B0; fmInput = $D7B1; fmOutput = $D7B2; fmInOut = $D7B3;
Значение fmClosed показывает, что файл закрыт. Значения fmInput и fmOutput показывают, что файл является текстовым файлом и что для него была выполнена процедура Reset (fmInput) или Rewrite (fmOutput). Значение fmOutput показывает, что переменная файлового типа является типизированным или нетипизированным фай- лом, для которого была выполнена процедура Reset или Rewrite. Лю- бое другое значение говорит о том, что для файловой переменной присваивание не было выполнено (и она, таким образом, не инициа- лизирована).
Поле UserData в Borland Pascal недоступно, и пользователь- ские программы могут сохранять в нем данные.
Поле Nаме содержит имя файла, которое представляет собой последовательность символов, оканчивающуюся нулевым символом (#0).
Для типизированных и нетипизированных полей RесSizе содержит длину записи в байтах, а поле Рrivate зарезервировано, но являет- ся свободным.
Для текстовых файлов BufPtr является указателем на буфер размером BufSize, BufPоs представляет собой индекс следующего символа в буфере, который должен быть записан или прочитан, а BufEnd - счетчик допустимых символов в буфере. Указатели OpenFunc, InOutFunc, FlushFunc и CloseFunc служат для ссылки на программы ввода-вывода и используются для управления файлом. В Главе 14 в разделе под заглавием "Драйверы устройств для тексто- вых файлов" приводится дополнительная информация по этому вопро- су.