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;


 

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

41661. Косвенные измерения. Определение показателей точности косвенных измерений 587.13 KB
  Косвенные измерения. Определение показателей точности косвенных измерений Цели и задачи работы: изучение методов измерения при которых искомое значение физической величины находят путем согласованных наблюдений других величин определяемых опытным путем связанных с искомой физической величиной известной зависимостью; ознакомление с правилами оценивания погрешностей косвенных измерений. При выполнении работы необходимо практически ознакомиться с системой допусков и посадок требованиями к точности линейных и угловых параметров изделий...
41662. Вставка и редактирование формул в редакторе WORD 73.64 KB
  Вставка и редактирование формул. Вставка формул. Вставка формул в редакторе WORD осуществляется с помощью формульного редактора. Вызов формульного редактора Eqution Editor из Word можно осуществить следующей последовательностью действий: поместите курсор в то место где должна быть вставлена формула; в меню вставка выберите команду обьект ; выберите закладку создание ; В окне тип обьекта выберите Microsoft Eqution 3.
41663. Теория электрической связи 263.74 KB
  Получение характеристик частотного модулятора при воздействии на его вход моногармонического сигнала. Напряжение смещения Есм являющееся постоянной составляющей модулирующего сигнала позволяет установить несущую частоту модулированного сигнала а переменная составляющая т. сам модулирующий сигнал поданный на гнезда КТ1 обеспечивает девиацию частоты fmx зависящую от амплитуды модулирующего сигнала. В схеме модулятора имеется блок автоматической регулировки усиления поддерживающий постоянную амплитуду ЧМ сигнала на схеме не показан.
41664. Исследование зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала 155.55 KB
  Цель: Научиться определять и анализировать зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала. Лабораторная работа №6 Тема: Исследование зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала. Лабораторная работа №6 Тема: Исследование зависимости выходного напряжения усилительного каскада от амплитуды и частоты входного сигнала.
41667. Поиск данных и фильтрации в среде программирования Borland C++Builder 288.5 KB
  Компонент Table позволяет не только отображать, редактировать и упорядочивать данные, но и отсортировывать записи по определенным критериям. Фильтрация может задаваться свойствами Filter,Filtered и FilterOptions компонента Table.
41668. Создание теста средствами Excel 286.5 KB
  Наиболее интересными функциями Excel представляются логические, которые в сочетании с функциями обработки текста и арифметическими функциями позволяют создавать тестовые программы по любому предмету.
41669. Теорія множин 224.99 KB
  Об'єкти що складають множини називаються елементами і позначаються малими буквами латинського алфавіту. алфавіту А B C B А Букви російського алфавіту АВ С А А В SCI код А B C А В А C Цілі числа 0. алфавіту C B C B Букви російського алфавіту B C B C SCI код C B B C Цілі числа 0. алфавіту C B C B Букви російського алфавіту А В Δ C А C SCI код А В C B Δ А Цілі числа 0.