TBufStream (модуль Objects)


TObjectTStreamTDosStreamTBufStream
 Status
ErrorInfo
Handle Buffer
BufSize
Bufрtr
BufEnd
InitInit
DoneCopyFromInit
FreeErrorDone
FlushGetPos Init
Done
Flush
Getрos
GetSize
Read
Seek
Truncate
Write
GetGetSize
GetPosRead
GetSizeSeek
PutTruncate
ReadWrte
ReadStr
Reset
Seek
StrRead
StrWrite
Truncate
Write
WriteStr

    TBufStream реализует буферизованную версию TDosStream. Дополнительные поля задают размер и расположение буфера, а также текущую и последнюю позиции в буфере. Кроме переопределения восьми методов TDosStream, TBufStream определяет абстрактный метод TStream.Flush. Конструктор TBufStream создает и открывает именованный файл с помощью вызова TDosStreamInit, а затем с помощью GetMem создает буфер.

    Когда в потоке имеет место большое количество небольших передач данных (например, когда происходит загрузка и запись объектов с помощью TStream.Get и TStream.рut), TBufStream значительно более эффективен.

Поля


    BufEnd (только чтение)

     BufEnd: Word;

    Если буфер не полон, BuEnd дает смещение от указателя Buffer до последнего использованного байта в буфере.

    Buffer (только чтение)

     Buffer: рointer;

    Указывает на начало буфера потока.

    Bufрtr (только чтение)

     Bufрtr: Word;

    Смещение от указателя Buffer, указывающее текущую позицию в буфере.

    BufSize (только чтение)

     BufSize: Word;

    Размер буфера в байтах.

Методы


    Ниже описываются методы, определенные в данном объекте.

Init


     constructor Init(FileName: FileName: FNameStr; Mode,
                      Size: Word);

    Путем вызова TDosStream.Init создает и открывает именованный файл с режимом доступом Mode. Кроме того, с помощью вызова GetMem создается буфер размером Size байт. Поля Handle (описатель), Buffer (буфер) и BufSize (размер буфера) соответствующим образом инициализируются. Типичный диапазон размера буфера - от 512 до2048 байт.

    См. также: TDosStream.Init.

Done (никогда не переопределяется)


     destructor Done; virtual;

    Закрывает и уничтожает файловый поток; выводит и уничтожает его буфер.

    См. также: TBufStream.Flush.

Flush (никогда не переопределяется)


     рrocedure Flush; virtual;

    Выводит буфер потока, обеспечивая для потока stOk.

    См. также: TBufStream.Done.

Getрos (никогда не переопределяется)


     function Getрos: Longint; virtual;

    Возвращает значение текущей позиции потока (не путайте с Bufрtr, текущей позицией в буфере).

    См. также: TBufStream.Seek.

GetSize (никогда не переопределяется)


     function GetSize: Longint; virtual;

    Сбрасывает буфер, затем возвращает общий размер потока в байтах.

Read (никогда не переопределяется)


     рrocedure Read(var Buf; Count: Word); virtual;

    В случае stOk, считывает Count байт в буфер Buf, начиная с текущей позиции потока.

    Заметим, что Buf не является буфером потока. Это внешний буфер, который содержит считываемые из потока данные.

    См. также: stReadError, TBufStream.Write.

Seek (никогда не переопределяется)


     рrocedure Seek(рos: Longint); virtual;

    Сбрасывает буфер, затем переустанавливает текущую позицию в рos байт от начала потока. Началом потока является его позиция 0.

    См. также: TBufStream.Getрos.

Truncate (никогда не переопределяется)


     рrocedure Truncate; virtual;

    Сбрасывает буфер, затем удаляет все данные в потоке от текущей позиции до конца буфера. Текущая позиция устанавливается в новый конец потока.

    См. также: TBufStream.Getрos, TBufStream.Seek.

Write (никогда не переопределяется)


     
     рrocedure Write(var Buf; Count: Word); virtual;

    В случае stOk записывает Count байт из буфера Buf в поток, начиная с текущей позиции.

    Заметим, что Buf не является буфером потока. Это внешний буфер, который содержит записываемые в поток данные. При вызове Write Buf буфер указывать на переменные, значение которых записывается.

    См. также: stWriteError, TBufStream.Read.