Класс TStream и его потомки - потоки данных — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Класс TStream и его потомки - потоки данных

2018-01-04 306
Класс TStream и его потомки - потоки данных 0.00 из 5.00 0 оценок
Заказать работу

Потоки данных в Delphi представляют собой обобщенную модель двоичных данных, для унификации ввода/вывода на разные носители информации. Родоначальником всех потоков в Delphi является абстрактный класс TStream. Объекты класса TStream «умеют» открываться, читать, писать, изменять текущее положение и закрываться.


 

От этого класса порождены 6 специализированных потомков: TFileStraam (файловый поток), TMemoryStream (обмен данными с памятью), TStringStream (строковый поток), TBLOBStream (поток обмена данными с полями типа BLOB), TWinSocketStream (поток обмена с сокетамн). TOLEStream (используется в технологии СОМ). Каждый из этих потомком обладает возможностью сохранять в потоке или читать из него объекты - эт» способность является главным отличием потоков от обычных файловых операций. Поэтому, область их применения отлична от файлов - потоки находят применение в первую очередь при работе с компонентами.

Многие классы Delphi имеют унифицированные методы LoadFromStream и SaveToStream, которые обеспечивают обмен данными с потоками.

Свойства потоков представлены в табл. 5.9.

Таблица 5.9

Свойство Описание
property Position: Int64 read GetPosition write SetPosition; Определяет текущую позицию потока, то есть то место, начиная с которого будет происходить обмен данными с программой
property Size: Int64 read GetSize write SetSize64; Определяет размер потока в байтах.
property DataString: string read FDataString; Содержит текущую строку, которая помещается в поток и читается из него(TStringStream).
property Handle: Integer read FHandle; Дескриптор файла(TFileStream).?
property Memory: Pointer read FMemory; Содержит указатель на область памяти,вкоторой размещается поток(TMemoryStream)
property TimeOut: Longint; Содержит время в миллисекундах, по истечению которого связь через сокет обрывается (TWinSocketStream).

Методы потоков класса TStreams представлены в таблице 5.10.

___________________ Таблица 5.10

Метод Описание
function CopyFrom (Source: TStream; Count: Longint): Longint; Копирует из потокаSource Count байт, начиная с текущей позиции потока.Если Count=0, копируется весь потокSource.Возвращает число скопированных байтов.
function Read(var Buffer; Count: Longint): Longint; virtual; abstract- Читает из потокаCount байт в буфер Buffer. Сдвигает текущую позициюнаколичество прочитанных байтов. Возвращает это количество.
procedure ReadBuffer (var Buffer; Count: Longint); Читает из потокаCount байт и помещаетих и Buffer. ЕслиCount превышает размер потока от текущей позиции до конце возбуждает исключениеEStreamError.
function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract; Смещает указатель потокаOffset в зависимости от условияOrigin.  
function Write(conet Buffer; Count: Longint): Longint; virtual; abstract; Записывает в потокCount байтов из переменнойBuffer.  
procedure WriteBuffer(const Buffer; Count: Longint); Записывает в потокCount байтов из переменнойBuffer. Если поток не может разместитьCount байтов, вызывается исключениеEStreamError.  
function ReadComponent (Instance: TComponent): TComponent; Читает компонент из потока и связывает его со свойствомInstance  
function ReadComponentRes (Instance: TComponent): TComponent; Читает компонент из ресурсного файла и связывает его со свойствомInstance  
procedure WriteComponent (Instance: TComponent); Записывает компоненты в поток.  
procedure WriteComponentRes (const ResName: string; Instance: TComponent); Записывает компоненты из ресурсного файла в поток.  
       

В основе операций считывания и записи данных в потоке лежат методы Read и Write. Именно они вызываются для реального выполнения внутри методов ReadBuffer и WriteBuffer, ReadComponent и WriteComponent. Эти методы являются абстрактными, они перекрываются в потомках, обеспечивая работу с конкретным физическим носителем данных потока.

Метод Seek используется для изменения текущей позиции в потоке: если Origin=soFromBeginning{0), то Offset определяет новую позицию в потоке; если Origin=soFromCurrent(l), позиция смещается на Offset байт к концу потока, если Origin=soFromEnd(2), позиция устанавливается на Offset байт от конца потока (в этом случае Offset задается отрицательным числом).

Группа методов обеспечивает чтение (ReadComponentRes) и запись (WriteComponentRes) из потока ресурса компонента. Они используются при создании компонента на основе данных о них, сохраненных в формате файлов ресурсов.

юз

 


 


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.