Файловые типы представлены как записи. Типизированные и нетипизированные файлы представлены как фиксированные записи:
Const
PrivDataLength=3*SizeOf(SizeInt) + 5*SizeOf(pointer);
Type
filerec = packed record
handle : THandle;
mode : longint;
recsize: Sizeint;
_private : array[1..PrivDataLength] of byte;
userdata : array[1..32] of byte;
name : array[0..filerecnamelength] of char;
End;
Текстовые файлы описываются, используя следующую запись:
TextBuf = array[0..255] of char;
textrec = packed record
handle: THandle;
mode: longint;
bufsize : SizeInt;
_private: SizeInt;
bufpos: SizeInt;
bufend: SizeInt;
bufptr: ^textbuf;
openfunc: pointer;
inoutfunc : pointer;
flushfunc : pointer;
closefunc : pointer;
userdata: array[1..32] of byte;
name: array[0..255] of char;
LineEnd : TLineEndStr;
buffer: textbuf;
End;
handle
Поле handle возвращает дескриптор файла (если файл открыт), как возвращённый операционной системой.
mode
Поле mode может принимать одно из нескольких значений. Если оно равно fmclosed, то файл закрыт, а дескриптор файла является неправильным. Если значение равно fminput, то это указывает на то, что файл открыт только для чтения. fmoutput указывает, что файл открыт только для записи, а fminout указывает, что файл открыт как для записи, так и для чтения.
name
Поле name – это строка символов с нулевым окончанием, которая представляет имя файла.
userdata
Поле userdata никогда не используется процедурами обработки файлов Free Pascal, и может быть использовано для специальных задач программным обеспечением разработчика.
|