

| стрелялки |
| спорт |
| драки |
| стратегии |
| гонки |
| логические |
| азартные |
| аркады |
| эротические |
| фильмы онлайн |
| Поток - TStream |
|
Абстрактный класс TStream описан в модуле Classes и предназначен для организации чтения и записи данных во внешний источник (файл, память и т. д.). Такие действия называются операциями ввода-вывода. Поток обладает всего двумя свойствами: property Size: Longint; property Position: Longint; Размер Size измеряется в байтах; попытка редактировать значение свойства в родительском классе не даст никаких результатов. Такая возможность предоставлена только в потомках TStream. Свойство Position возвращает текущую позицию внутри потока во время операций чтения и записи. За чтение данных потока отвечает метод: function Read(var Buffer; Count: Longint): Longint; virtual; abstract; А за запись данных потока метод: function Write(const Buffer; Count: Longint): Longint; virtual; abstract; Но если вы хотите контролировать появление ошибок при чтении и записи данных, то опирайтесь на методы: procedure ReadBuffer(var Buffer; Count: Longint); procedure WriteBuffer(const Buffer; Count: Longint); Данные процедуры - это надстройки над методами Read() и Write(). При невыполнении условий - (Count <> 0) and (Read(Buffer, Count) <> Count) для Read-Buffer или (Count <> 0) and (Write(Buffer, Count) <> Count) для WriteBuffer - создаются исключительные ситуации EReadError и EWriteError соответственно. Для копирования данных из одного потока в другой предназначен метод: function CopyFrom(Source: TStream; Count: Longint): Longint; где Source - поток-источник, а Count - количество копируемых байт. При необходимости полностью скопировать поток в качестве параметра Count передается значение 0. Функция возвращает количество скопированных байт. Следующий метод обеспечивает изменение текущей позиции потока (табл. 6.1): function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract; |
