Поток. Иерархия классов потоков - davaiknam.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Анализ денежных потоков и доходов организации 1 179.21kb.
Литература к лекции 8 Рабочий поток анализа требований 1 88.9kb.
Управление денежными потоками. Методы количественной оценки денежных... 1 151.32kb.
Х. Методологические основы управления денежными потоками предприятия... 12 1830.95kb.
Lock free and Wait Free. (Далее лф и вф — траблы с клавой) [from... 1 53.18kb.
«Гендерная иерархия» в современном обществе: социокультурный аспект... 1 51.17kb.
Потоковые шифры преобразуют открытый текст в шифротекст по одному... 1 29.2kb.
Эволюция ранней христианской общины 1 94.21kb.
Управление движением денежных потоков на предприятии 1 148.72kb.
Синхронизация потоков 1 77.74kb.
Двухканальный подход к определению поля потоков дактилоскопических... 1 160.63kb.
Управление движением денежных потоков на предприятии 1 148.72kb.
Направления изучения представлений о справедливости 1 202.17kb.

Поток. Иерархия классов потоков - страница №1/1


  1. Поток. Иерархия классов потоков:

Потоки – классы, предназначенные для хранения и последовательного ввода-вывода данных.

Класс

Описание

TStream

Абстрактный поток. От него наследуются все остальные. Свойства и методы образуют базовый интерфейс потоковых объектов.

THandleStream

Дескрипторный поток. Хранит данные в файле. Для чтения-записи файла используется дескриптор (handle).

Дескриптор — это номер открытого файла в операционной системе. Его возвращают низкоуровневые функции создания и открытия файла.



TFileStream

Файловый поток. Хранит данные в файле. Поток открывает-создает файл по имени, переданному в конструктор.

TMemoryStream

Хранит данные в оперативной памяти. Моделирует работу с файлом. Используется для хранения промежуточных результатов, когда файловый поток не подходит из-за низкой скорости передачи данных.

TResourceStream

Обеспечивает доступ к ресурсам в Windows-приложении.

TBlobStream

Обеспечивает последовательный доступ к большим полям таблиц в базах данных.

  1. Свойства и методы TStream:

    Свойства

    Position: Longint

    текущая позиция чтения-записи.

    Size: Longint

    текущий размер потока в байтах.

    Методы

    CopyFrom (Source: TStream; Count: Longint): Longint

    копирует Count байт из потока Source в свой поток.

    Read (var Buffer; Count: Longint): Longint

    читает Count байт из потока в буфер Buffer, продвигает текущую позицию на Count байт вперед и возвращает число прочитанных байт.

    (Если значение функции меньше значения Count, то в результате чтения был достигнут конец потока.)



    ReadBuffer (var Buffer; Count: Longint)

    читает из потока Count байт в буфер Buffer и продвигает текущую позицию на Count байт вперед.

    (Если выполняется попытка чтения за концом потока, то генерируется ошибка.)



    Seek (Offset: Longint; Origin: Word): Longint

    продвигает текущую позицию в потоке на Offset байт относительно позиции, заданной параметром Origin. Параметр Origin следующие значения:

    0 – относительно начала потока; 1 – относительно текущей позиции в потоке; 2 – относительно конца потока.



    Write (const Buffer; Count: Longint): Longint

    записывает в поток Count байт из буфера Buffer, продвигает текущую позицию на Count байт вперед и возвращает реально записанное количество байт. (Если значение функции отличается от значения Count, то при записи была ошибка.)

    WriteBuffer (const Buffer; Count: Longint)

    записывает в поток Count байт из буфера Buffer и продвигает текущую позицию на Count байт вперед.

    (Если по какой-либо причине невозможно записать все байты буфера, то генерируется ошибка.)



  2. Пример записи переменной string в поток:

Var

  Stream: TStream;

  S: AnsiString;

  StrLen: Integer;

begin

  Stream := TFileStream.Create('Sample.Dat', fmCreate); // Создание файлового потока



  StrLen := Length(S) * SizeOf(Char); // Запись в поток некоторой строки

  Stream.Write(StrLen, SizeOf(Integer)); // Запись длины строки

  Stream.Write(S, StrLen);                // Запись символов строки

  Stream.Free; // Закрытие потока

end;


  1. Сериализация и десериализация:

Сериализация – процесс сохранения состояния объекта во внешнюю среду.

Десериализация – процесс восстановления состояния объекта из внешней среды.



  1. Почему сериализация и десериализация требует использования потоков, почему нельзя работать с файлами через read и write:




  1. Высокоуровневая и низкоуровневая сериализация:

Низкоуровневая сериализация – это вид сериализации, при котором разработчик сам заботится о внедрении форматов и методах сохранения состояния объекта.

Высокоуровневая сериализация производится стандартными средствами среды визуальной разработки.



  1. Основное правило высокоуровневой сериализации:

При сериализации может быть сохранена и восстановлена только та информация, что записана в read-write published-свойствах объекта или в псевдосвойствах.

  1. Требования для сериализации иерархии классов стандартными методами Delphi. Пример:

  • Унаследовать класс одного из сериализуемых объектов от TComponent.

  • Создать поток и вызвать метод WriteComponent(Inst: TComponent).

  1. GetChildren. Параметры и назначение:

Используется для решения проблемы, возникающей при использовании высокоуровневой сериализации классов содержащих списки объектов.

Автоматически вызывается, когда система сериализации хочет опросить компонент о том, какие еще компоненты нужно сохранить.



Type

TGetChildProc = procedure (Child: TComponent) of object;

GetChildren(Proc: TGetChildProc; Root: TComponent);

// Proc – процедура, в качестве аргумента которой указывается компонент который нужно сериализовать вместе с данным



// Root – ссылка на объект, для которого был вызван метод Stream.WriteComponent

  1. Основные свойства и методы TreeView:

    Свойства

    AutoExpand: Boolean

    = True – узлы открываются и сворачиваются одним кликом.

    ChangeDelay: Integer

    Время задержки генерации события OnChange.

    HideSelection: Boolean

    = True – выбранный узел высвечивается на экране как выбранный, если TreeView не в фокусе.

    HotTrack: Boolean

    = True – отображение узлов изменяется при проведении указателя.

    Images: TCustomImageList

    Элемент из массива основных иконок для объектов TTreeNode.

    Items: TTreeNodes

    Доступ к узлам дерева.

    ReadOnly: Boolean

    = True – запрещено редактирование узлов.

    Selected: TTreeNode

    Ссылка на текущий выбранный элемент.

    StateImages: TCustomImageList

    Элемент из массива иконок для узлов состояния.

    Методы

    FullColapse

    Сворачивает все узлы.

    FullExpand

    Разворачивает все узлы.

    OnChange: TTVChangedEvent

    Генерируется после каждого изменения текущего выбранного узла.

    OnChanging: TTVChangingEvent

    Генерируется при каждой попытке изменить выбранный узел.

  2. Основные свойства и методы TTreeNodes:

    Свойства

    Count: Integer

    Количество узлов дерева.

    Item [Index: Integer]: TTreeNode

    Массив объектов TTreenode.

    Методы

    Add (Node: TTreeNode; const S: string): TTreeNode

    Добавляет TTreeNode в дерево (добавление в тот же уровень что и Node).

    AddChild (Node: TTreeNode, const S: string): TTreeNode

    Добавляет TTreeNode в дерево (добавление в конец дочерних узлов Node).

    Clear

    Удаляет все узлы.

    Delete (Node: TTreeNode)

    Удаляет Node и его потомков.

  3. Основные свойства и методы TTreeNode:

Свойства

Count: Integer

Количество дочерних элементов.

Data: Pointer

Связь TTreeNode с данными.

Expanded: Boolean

= True – узел в развернутом состоянии.

HasChildren: Boolean

= True – есть дочерние узлы.

ImageIndex: TImageIndex

Индекс иконки, при которой элемент не выбран.

Item [Index: Integer]

Доступ к дочерним узлам.

Level: Integer

Уровень узла.

Parent: TTreeNode

Доступ к родителю.

Selected: Boolean

= True – текущий выбранный узел.

SelectedIndex: Integer

Индекс иконки, при которой элемент выбран.

StateIndex: Integer

Индекс дополнительной иконки, изображаемой слева от основной.

Методы

Collapse (Recurse: Boolean)

Сворачивает узел. Если Recurse = True, то сворачиваются и дочерние.

Delete

Удаляет узел.

DeleteChildren

Удаляет потомков.

Expand (Recurse: Boolean)

Разворачивает узел. Если Recurse = True, то разворачиваются и дочерние.

MakeVisible

Раскрывает все родительские узлы, чтобы сделать узел видимым.





Мы ничего не поймем, если будем читать слишком быстро или слишком медленно. Блез Паскаль
ещё >>