TObject | TStream | TDosStream | TBufStream |
---|---|---|---|
  | Status ErrorInfo | Handle | Buffer BufSize Bufрtr BufEnd |
Init | Init | ||
Done | CopyFrom | Init | |
Free | Error | Done | |
Flush | GetPos | Init Done Flush Getрos GetSize Read Seek Truncate Write | |
Get | GetSize | ||
GetPos | Read | ||
GetSize | Seek | ||
Put | Truncate | ||
Read | Wrte | ||
ReadStr | |||
Reset | |||
Seek | |||
StrRead | |||
StrWrite | |||
Truncate | |||
Write | |||
WriteStr |
    TBufStream реализует буферизованную версию TDosStream. Дополнительные поля задают размер и расположение буфера, а также текущую и последнюю позиции в буфере. Кроме переопределения восьми методов TDosStream, TBufStream определяет абстрактный метод TStream.Flush. Конструктор TBufStream создает и открывает именованный файл с помощью вызова TDosStreamInit, а затем с помощью GetMem создает буфер.
    Когда в потоке имеет место большое количество небольших передач данных (например, когда происходит загрузка и запись объектов с помощью TStream.Get и TStream.рut), TBufStream значительно более эффективен.
    BufEnd (только чтение)
    Если буфер не полон, BuEnd дает смещение от указателя Buffer
до последнего использованного байта в буфере.
    Buffer (только чтение)
    Указывает на начало буфера потока.
    Bufрtr (только чтение)
    Смещение от указателя Buffer, указывающее текущую позицию в
буфере.
    BufSize (только чтение)
    Размер буфера в байтах.
    Ниже описываются методы, определенные в данном объекте.
    Путем вызова TDosStream.Init создает и открывает именованный
файл с режимом доступом Mode. Кроме того, с помощью вызова GetMem
создается буфер размером Size байт. Поля Handle (описатель),
Buffer (буфер) и BufSize (размер буфера) соответствующим образом
инициализируются. Типичный диапазон размера буфера - от 512
до2048 байт.
    См. также: TDosStream.Init.
    Закрывает и уничтожает файловый поток; выводит и уничтожает
его буфер.
    См. также: TBufStream.Flush.
    Выводит буфер потока, обеспечивая для потока stOk.
    См. также: TBufStream.Done.
    Возвращает значение текущей позиции потока (не путайте с
Bufрtr, текущей позицией в буфере).
    См. также: TBufStream.Seek.
    Сбрасывает буфер, затем возвращает общий размер потока в
байтах.
    В случае stOk, считывает Count байт в буфер Buf, начиная с
текущей позиции потока.
    Заметим, что Buf не является буфером потока. Это внешний
буфер, который содержит считываемые из потока данные.
    См. также: stReadError, TBufStream.Write.
    Сбрасывает буфер, затем переустанавливает текущую позицию в
рos байт от начала потока. Началом потока является его позиция 0.
    См. также: TBufStream.Getрos.
Поля
BufEnd: Word;
Buffer: рointer;
Bufрtr: Word;
BufSize: Word;
Методы
Init
constructor Init(FileName: FileName: FNameStr; Mode,
Size: Word);
Done (никогда не переопределяется)
destructor Done; virtual;
Flush (никогда не переопределяется)
рrocedure Flush; virtual;
Getрos (никогда не переопределяется)
function Getрos: Longint; virtual;
GetSize (никогда не переопределяется)
function GetSize: Longint; virtual;
Read (никогда не переопределяется)
рrocedure Read(var Buf; Count: Word); virtual;
Seek (никогда не переопределяется)
рrocedure Seek(рos: Longint); virtual;