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;


 

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

55399. Вибір майбутньої професії 145 KB
  У цьому випадку людина вивчає власні можливості інтереси здібності переглядає багато професій і свідомо обирає ту яка підходить саме для неї з урахуванням сучасних проблем суспільства та особливостей ринку праці.
55400. Пишаюся своєю професією 167 KB
  Метою даної методичної розробки є удосконалення досвіду проведення поззаудиторних заходів. На сучасному етапі перед професійною освітою багато завдань, але найголовніше – виховувати гідних громадян...
55401. ВИБІР ПРОФЕСІЙНОЇ КАР’ЄРИ БУХГАЛТЕРА 5.35 MB
  Ідеї проектів належали викладачам, але студентам було запропоновано розповісти про своє бачення розв’язання проблеми або висунути ідею для нового проекту. Для того, щоб досягти реалізації проекту, важливо створити дружню атмосферу, заохотити студентів до спілкування англійською мовою під час обговорення і здійснення проекту.
55402. What are you? Professions 52 KB
  We must all work together to create a better place. A. Barry Explain the expression. (Pupils try to say their opinion, e.g. everyone has to work hard on our lesson, we have to study good to build our future...) Well, we use this idiom in our lesson: we’ll work hard together today and that’s why it will be one more step to understand what you would like to be in future.
55403. MY FUTURE PROFESSION 7.13 MB
  All professions are important, All professions are necessary. Do you want to choose any profession? What will you be? What will your friend be?
55404. My future profession 97 KB
  I offer you to do an exercise from the theory of solving research tasks (TSRT-pedagogics) called “the tree of assosiations”. You have an algoritm of doing this exercise. Let us start. Write the starting word “profession”.What assosiations do you have with the word “profession”? Write in column as many words as you can and do it very quickly.
55405. PROFESSIONS 122.5 KB
  Nick is a little boy from Oxford. He is 6. He is a pupil. His family is big. His mother`s name is Helen. She is 43. She is a teacher and works at school. His mother teaches children. His father`s name is Bill. He is 44 and he is a businessman. He works at the office. He works with papers. His brother Sam is 22.
55406. The Professions We Choose 114 KB
  It is not who you are, but what you do. These words are closely connected with your topic The Professions we choose. There is great variety of professions. Some of them may seem to be interesting to you, some of them boring.
55407. Буду професіоналом 35.5 KB
  Кожного дня ми, педагоги, маємо змогу працювати з самими ніжними, довірливими, беззахисними, тендітними маленькими особистостями, за розвиток, виховання та навчання яких ми відповідаємо перед батьками, перед державою та насамперед перед самими собою.