На этом шаге мы рассмотрим свойства и методы класса TStream.
Класс TStream и его потомки называются потоками. Со времен появления в библиотеке TurboVision он не претерпел существенных изменений, но теперь потоки стали обязательными составными частями там, где нужно прочитать или передать во внешний источник какую-либо информацию.
TStream является абстрактной моделью совокупности данных, обладающей двумя свойствами - длиной Size (тип Int64, только для чтения) и положением текущего элемента Position (тип Int64).
От TStream порождены дочерние объекты, позволяющие пользоваться потоками при работе с файлами, блоками памяти и т. п. Так, в модуле CLASSES описаны классы TMemoryStream и TFileStream.
Данные потока можно читать или записывать, используя предоставляемый буфер, или копировать из другого потока. Эта возможность реализована методами:
function Read(var Buffer; Count: LongInt) : LongInt; virtual; abstract; function Write(const Buffer; Count: LongInt) : LongInt; virtual; abstract;
Метод:
function Seek(Offset: LongInt; Origin: Word): LongInt; virtual; abstract;
позиционирует поток. В зависимости от значения параметра Origin новая
позиция выбирается так:
0 - новая позиция равна Offset;
1 - текущая позиция смещается на Offset байт к концу потока от
текущего положения. Значение должно быть неотрицательно;
2 - новая позиция находится на Offset байт от конца потока. Значение
должно быть неположительно.
Методы:
procedure ReadBuffer (var Buffer;Count: LongInt); procedure WriteBuffer (const Buffer; Count: LongInt);
представляют собой оболочки над Read/Write, вызывающие в случае неудачи операции исключительные ситуации EReadError/EWriteError.
На следующем шаге мы остановимся более подробно на свойствах и методах класса TControl.