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;


 

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

17411. Створення рисунків і робота з ними в Word 336.5 KB
  Лекція 7 Створення рисунків і робота з ними Документ крім тексту може містити також графічні об'єкти рисунки графіки діаграми схеми ілюстрації та ін. які можна створювати не тільки за допомогою зовнішніх графічних пакетів програм а й засобами сервісних програм ре
17412. Робота з великими документами в Word 337.5 KB
  Лекція 8 Робота з великими документами Під терміном великий документ слід розуміти документ який за кількістю сторінок перевищує деяке значення наприклад 100 сторінок. Створення таких документів їх редагування та використання залежать від уміння користувача опра
17413. Робота з шаблонами, полями і формами в Word 119.5 KB
  Лекція 9Робота з шаблонами полями і формами Шаблони документів Шаблонами називають документи спеціального типу які використовують для створення інших документів. Файли шаблонів відрізняються від звичайних документів розширенням .dot. Будьякий документ редактора Word...
17414. Теоретические основы эстетического воспитания дошкольников 229.5 KB
  Проблема эстетического воспитания особенно остро стоит перед дошкольной педагогикой. Именно в дошкольном периоде формируются зачатки эстетических чувств и переживаний, закладывается основа ценностного отношения к окружающему миру. От того, что ляжет в основу эстетического восприятия мира, сформированного в дошкольном учреждении
17415. Одношаровий персептрон 128.5 KB
  5 5 Лабораторна робота №2 Одношаровий персептрон Мета: отримати навички розвязання практичних задач за допомогою одношарового персептрона. 1.1. Теоретичні відомості Модель перcептрона Модель персептрона має вигляд показаний на рис. 1.1. ...
17416. Нейронні мережі на основі радіальних базисних функцій 113.5 KB
  Лабораторна робота № 3 Нейронні мережі на основі радіальних базисних функцій Мета: отримати навички розвязання практичних задач за допомогою мереж на основі радіальних базисних функцій. 2.1. Теоретичні відомості Основні відомості Мережа на основі радіальних ба
17417. Мережі Кохонена 416.5 KB
  Лабораторна робота № 4 Мережі Кохонена Мета: отримати навички розвязання практичних задач за допомогою мереж Кохонена. 3.1. Теоретичні відомості Карти Кохонена що самоорганізуються це спеціальний клас штучних НМ робота яких базується на конкурентному принцип
17418. Асоціативна мережа Хопфілда 127 KB
  Лабораторна робота № 5 Асоціативна мережа Хопфілда Мета: отримати навички розвязання практичних задач за допомогою мереж Хопфілда. 4.1. Теоретичні відомості 4.1.1. Дискретна модель Хопфілда як асоціативна пам'ять Визначення. Асоціативна пам'ять система здатна в...
17419. Генетичні алгоритми 89.5 KB
  Лабораторна робота № 6 Генетичні алгоритми Мета: отримати навички розвязання практичних задач за допомогою генетичних алгоритмів. 5.1. Теоретичні відомості Генетичні алгоритми ГА Holland 19691990 спрощено моделюють процеси природної еволюції і засновані на стохасти