8.2.14. Файлы

На верх  Назад  Вперёд

Файловые типы представлены как записи. Типизированные и нетипизированные файлы представлены как фиксированные записи:

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, и может быть использовано для специальных задач программным обеспечением разработчика.