Курсовая работа: Потоки TStream, TFileStream, TMemoryStream
Введение
Задачей курсовой работы является реализация программы для работы с файловой структурой операционной системы Windows. Для реализации программы требуется использовать интегрированную среду разработки Delphi7.
Цель работы – изучить принципы программирования файловой структуры в операционной системе Windows и создать программу для работы с потоками TStream, TFileStream и TMemoryStream. В проекте предполагается реализовать основные операции над потоками, такие как чтение, запись, удаление и редактирование.
Разрабатываемая система выполняет следующие функции:
1. позволяет создавать потоки TFileStream, TMemoryStream,
2. сохранение данных в файлы,
3. открытие и редактирование файлов при помощи потоков,
4. использовать данные из файлов в программе.
Для разработки приложения используются следующие программные инструменты:
1. среда разработки Delphi 7
1. Поток TStream
В основе иерархии классов потоков лежит класс Tstream. Он обеспечивает выполнение основных операций потока безотносительно к реальному носителю информации. Основными из них являются чтение и запись данных. Класс Tstream порожден непосредственно от класса TObject. Потоки также играют важную роль в чтении/записи компонентов из файлов ресурсов (DFM). Большая группа методов обеспечивает взаимодействие компонента и потока, чтение свойств компонента из ресурса и запись значений свойств в ресурс.
Таблица 1 - Свойства и методы класса Tstream
Объявление | Описание |
property Position: Longint; | Определяет текущую позицию в потоке |
property Size: Longint; | Определяет размер потока в байтах |
function CopyFrom( Source: TStream; Count: Longint) : Longint; | Копирует из потока SourceCount байты, начиная с текущей позиции. Возвращает число скопированных байтов |
function Read(var Buffer; Count: Longint) : Longint; virtual; abstract; | Абстрактный класс, перекрываемый в наследниках. Считывает из потока Count байты в буфер Buffer. Возвращает число скопированных байтов |
procedure Read3uffer (var Buffer; Count: Longint) ; | Считывает из потока Count байты в буфер Buffer. Возвращает число скопированных байтов |
function Seek (Off set: Longint; Origin: Word): Longint; virtual; abstract; | Абстрактный класс, перекрываемый в наследниках. Смещает текущую позицию в реальном носителе данных на Offset байтов в зависимости от условия Origin |
function Write (const Buffer; Count: Longint): Longint; virtual; abstract; | Абстрактный класс, перекрываемый в наследниках. Записывает в поток Count байты из буфера Buffer. Возвращает число скопированных байтов |
procedure WriteBuffer (const Buffer; Count: Longint); | Записывает в поток Count байты из буфера Buffer. Возвращает число скопированных байтов |
function ReadComponent (Instance: TComponent): TComponent; | Передает данные из потока в компонент instance, заполняя его свойства значениями |
function ReadComponentRes (Instance: TComponent) : TComponent; | Считывает заголовок ресурса компонента Instance и значения его свойств из потока. |
procedure ReadResHeader; | Считывает заголовок ресурса компонента из потока |
procedure WriteComponent (Instance: TComponent) ; | Передает в поток значения свойств компонента Instance |
procedure WriteComponentRes (const ResName: string; Instance: TComponent) ; | Записывает в поток заголовок ресурса компонента Instance и значения его свойств |
Итак, в основе операций считывания и записи данных в потоке лежат методы Read и Write. Именно они вызываются для реального выполнения операции внутри методов ReadBuffer и WriteBuffer, ReadComponent и WriteComponent. Так как класс TStream является абстрактным, то методы Read и write также являются абстрактными. В классах-наследниках они перекрываются, обеспечивая работу с конкретным физическим носителем данных.
Листинг 1 - создание, чтение и запись потока
Var
Stream: TStream; //Объявлениепотока
Begin
Stream := TMemoryStream.Create (...); //Созданиепотока
Stream.Read(...); //Чтение данных из потока
Stream.Write(...); //Запись данных в поток
Stream.Free; //Очистить поток
End;
Группа методов обеспечивает чтение и запись из потока ресурса компонента. Они используются при создании компонента на основе данных о нем, сохраненных в формате файлов ресурсов. Для чтения ресурса используется метод ReadComponentRes, в котором последовательно вызываются: метод ReadResHeader — для считывания заголовка ресурса компонента из потока; метод ReadComponent — для считывания значений свойств компонента. Для записи ресурса в поток применяется метод writeComponentRes.
2. Поток T FileStream
Объект TFileStream является потомком главного объекта TStream и позволяет получить доступ к диску, а так же создать поток для работы с файлами. При этом поток работает с файлом без учета типа хранящихся в нем данных.
Полное имя файла, который надо открыть, задается в параметре FileName. Этотпараметр — простаястрока:
constructor Create(const FileName: string; Mode: Word);
Параметр Mode определяет режим работы с файлом. Он составляется из флагов режима открытия: fmCreate — файл создается; fmOpenRead — файл открывается для чтения; fmopenwrite — файл открывается для записи; fmOpenReadWrite — файл открывается для чтения и записи.
--> ЧИТАТЬ ПОЛНОСТЬЮ <--