12161

Классы для представления потока данных

Лекция

Информатика, кибернетика и программирование

Классы для представления потока данных В среде Delphi существует иерархия классов для хранения и последовательного вводавывода данных. Классы этой иерархии называются потоками. Потоки лучше всего представлять как файлы. Классы потоков обеспечивают различное физическое ...

Русский

2013-04-24

43 KB

1 чел.

Классы для представления потока данных

В среде Delphi существует иерархия классов для хранения и последовательного ввода-вывода данных. Классы этой иерархии называются потоками. Потоки лучше всего представлять как файлы. Классы потоков обеспечивают различное физическое представление данных: файл на диске, раздел оперативной памяти, поле в таблице базы данных (таблица 3.1).

Класс

Описание

TStream

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

THandleStream

Поток, который хранит свои данные в файле. Для чтения-записи файла используется дескриптор (handle), поэтому поток называется дескрипторным. Дескриптор — это номер открытого файла в операционной системе. Его возвращают низкоуровневые функции создания и открытия файла.

TFileStream

Поток, который хранит свои данные в файле. Отличается от ThandleStream тем, что сам открывает (создает) файл по имени, переданному в конструктор.

TMemoryStream

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

TResourceStream

Поток, обеспечивающий доступ к ресурсам в Windows-приложении.

TBlobStream

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

Таблица 3.1. Классы потоков 

Потоки широко применяются в библиотеке VCL и наверняка вам понадобятся. Поэтому ниже кратко перечислены их основные общие свойства и методы.

Общие свойства:

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 байт вперед. Если по какой-либо причине невозможно записать все байты буфера, то генерируется ошибка.

Ниже приводится фрагмент программы, демонстрирующий создание файлового потока и запись в него строки:

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;


 

А также другие работы, которые могут Вас заинтересовать

57993. Дії з десятковими дробами 69 KB
  Мета: Узагальнити та систематизувати уміння та навички учнів виконувати дії з десятковими дробами. Ознайомити учнів із сучасною екологічною ситуацією в світі та в Україні. Формувати вміння переносити набуті знання у нові ситуації...
57994. Електронні таблиці. Побудова діаграм. Стратегія успіху або Як обрати професію 130.5 KB
  Мета уроку: сформувати: навики створювати діаграми; вміння аналізувати їх; вміння застосовувати діаграми на практиці; розвивати та вдосконалювати: навики роботи з ЕТ Excel; навики роботи на ПК; вміння працювати в групі...
57995. Емоції та почуття в житті людини 41 KB
  Мета уроку: надати загальне уявлення про емоції почуття та моральні почуття їх роль у житті людини; вчити наводити приклади емоцій та почуттів познайомити учнів про силу моральних почуттів; розвивати навички опанування термінів та роботи в групах...
57996. Учимся речевому этикету. Уроки вежливости 56.5 KB
  Цель урока: ознакомить учащихся с правилами вежливого поведения и речи; сформировать умение активно пользоваться различными этикетными формами в устной и письменной речи с учетом речевой ситуации; развивать образное и логическое мышление, чувства языка, языковой памяти, речевого слуха...
57997. Построение диаграмм и графиков на основе табличных данных 102 KB
  Напишу много чисел и попрошу их представить в порядке возрастания Легко представить А если я построю диаграмму или график Какие способы представления данных вам известны Ответ: таблицы схемы запись графики диаграммы т. Какие из этих способов вы считаете наиболее наглядными...
57998. Підсумки Microsoft Excel (MICROSOFT OFFICE 2010) 427.5 KB
  Мета: Отримання учнями практичних навичок впорядкування списків шляхом групування записів з виведенням проміжних результатів.
57999. Фізична та соціальна складова здоров’я. Інноваційний інтегрований урок з основ здоров’я та фізичної культури 973 KB
  Мета: Формувати позитивну мотивацію щодо здорового способу життя культури здоров’я; поліпшувати репродуктивне здоров’я дітей та підлітків; своєчасне попередження вживання шкідливих звичок серед молоді; підвищення особистісного і творчого потенціалу учнів їх прагнення до самореалізації життєвого успіху...
58000. Форматування тексту 55 KB
  Мета уроку: знайомити учнів з поняттям форматування та видами Форматування; Вчити використовувати засоби форматування тексту, Застосовувати кнопки панелі інструментів та нестандартні символи при оформлені текстів; розвивати абстрактне мислення, творчий підхід до ство рення документів.
58001. ФОРМУЛИ СКОРОЧЕНОГО МНОЖЕННЯ 151.5 KB
  Вчитель відкриває на ІАД правильні відповіді які до цього момента були приховані. Вчитель викликає до дошки по черзі чотирьох учнів кожен з яких за допомогою стрілок з’єднує записи завдань із записами правильних рішень.