Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Курсовая работа: Потоки TStream, TFileStream, TMemoryStreamКурсовая работа: Потоки TStream, TFileStream, TMemoryStreamЮжно-Сахалинский институт экономики, права и информатики Кафедра КТиС Пояснительная записка к курсовой работепо дисциплине: Языки программирования и методы трансляции на тему: Потоки: TStream, TFileStream, TMemoryStream Южно-Сахалинск 2010 Введение Задачей курсовой работы является реализация программы для работы с файловой структурой операционной системы Windows. Для реализации программы требуется использовать интегрированную среду разработки Delphi7. Цель работы – изучить принципы программирования файловой структуры в операционной системе Windows и создать программу для работы с потоками TStream, TFileStream и TMemoryStream. В проекте предполагается реализовать основные операции над потоками, такие как чтение, запись, удаление и редактирование. Разрабатываемая система выполняет следующие функции: 1. позволяет создавать потоки TFileStream, TMemoryStream, 2. сохранение данных в файлы, 3. открытие и редактирование файлов при помощи потоков, 4. использовать данные из файлов в программе. Для разработки приложения используются следующие программные инструменты: 1. среда разработки Delphi 7 1. Поток TStream В основе иерархии классов потоков лежит класс Tstream. Он обеспечивает выполнение основных операций потока безотносительно к реальному носителю информации. Основными из них являются чтение и запись данных. Класс Tstream порожден непосредственно от класса TObject. Потоки также играют важную роль в чтении/записи компонентов из файлов ресурсов (DFM). Большая группа методов обеспечивает взаимодействие компонента и потока, чтение свойств компонента из ресурса и запись значений свойств в ресурс. Таблица 1 - Свойства и методы класса Tstream
Итак, в основе операций считывания и записи данных в потоке лежат методы 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. Поток TFileStream Объект TFileStream является потомком главного объекта TStream и позволяет получить доступ к диску, а так же создать поток для работы с файлами. При этом поток работает с файлом без учета типа хранящихся в нем данных. Полное имя файла, который надо открыть, задается в параметре FileName. Этот параметр — простая строка: constructor Create(const FileName: string; Mode: Word); Параметр Mode определяет режим работы с файлом. Он составляется из флагов режима открытия: fmCreate — файл создается; fmOpenRead — файл открывается для чтения; fmopenwrite — файл открывается для записи; fmOpenReadWrite — файл открывается для чтения и записи. И флагов режима совместного использования: fmShareExciusive — файл недоступен для открытия другими приложениями; fmShareDenyWrite — другие приложения могут читать данные из файла; fmShareDenyRead — другие приложения могут писать данные в файл; fmShareDenyNone — другие приложения могут производить с файлом любые операции. Создание потока аналогично примеру, рассмотренному в листинге 1. Подробнее познакомимся с методами чтения, записи и внутренней структурой файла. Начнем со структуры. Когда вы открыли файл, позиция курсора устанавливается в самое начало и любая попытка чтения или записи будет происходить в эту позицию курсора. Если вам надо прочитать или записать в любую другую позицию, то надо передвинуть курсор. Для этого используется Метод Seek. "Точка отсчета" позиции зависит от значения параметра Origin: soFromBeginning — смещение должно быть положительным и отсчитывается от начата потока; soFromCurrent — смещение относительно текущей позиции в потоке; soFromEnd — смещение должно быть отрицательным и отсчитывается от конца потока. Не забывайте, что один байт - это один символ. Единственное исключение - файлы в формате Unicode. В них один символ занимает 2 байта. Таким образом, надо учитывать, в каком виде хранится информация в файле. Итак, если вам надо передвинуться на 10 символов от начала файла, можете написать следующий код: Stream.Seek(10, SoFromBeginning) ; Метод seek всегда возвращает смещение курсора от начала файла. Этим можно воспользоваться, чтобы узнать, где мы сейчас находимся, а можно и узнать общий размер файла. Если переместиться в конец файла, то функция вернет количество байт от начала до конца, т. е. полный размер файла. В следующем примере устанавливается позиция в файле на 0 байт от конца, т. е. в самый конец. Тем самым получается полный размер файла: Размер файла := Stream.Seek(0, soFromEnd); Для чтения из файла нужно использовать метод Read. У этого метода два параметра: 1. Переменная, в которую будет записан результат чтения; 2. Количество байт, которые надо прочитать. В листинге 2 рассмотрим пример чтения из файла с 20-й позиции Листинг 2 – Чтения из файла, начиная с 20-й позиции. Var Stream: TFileStream; //Переменная типа объект TFileStream. buf: array[0..10] of char; // Буфер для хранения прочитанных данных begin // Далее открываем файл “Sample.wrk”. Stream:= TFileStream.Create('c:\Sample.wrk, fmOpenReadWrite); Stream.Seek(20, soFromBeginning); // Перемещение на 20 символов вперед. Stream.Read(buf, 5); // Чтение 5 символов из установленной позиции. Stream.Free; // Очистка потока. end; Метод Read возвращает количество реально прочитанных байт (символов). Если не произошло никаких проблем, то это число должно быть равно количеству запрошенных для чтения байт. Есть только два случая, когда эти числа отличаются: 1. При чтении был достигнут конец файла и дальнейшее чтение стало невозможным; 2. Ошибка на диске или любая другая проблема. Для чтения применяется метод write. У него два параметра : 1. Переменная, содержимое которой нужно записать; 2. Число байт для записи. Пользоваться этим методом можно точно так же как и методом для чтения. 3. Поток TMemoryStream Класс TMemoryStream обеспечивает сохранение данных в адресном пространстве. При этом методы доступа к этим данным остаются теми же, что и при работе с файловыми потоками. Это позволяет использовать адресное пространство для хранения промежуточных результатов работы приложения, а также при помощи стандартных методов осуществлять обмен данными между памятью и другими физическими носителями. Для создания потока TMemoryStream используется конструктор Create без параметров: Constructor Create; Для чтения информации из файла с одновременным занесением ее в поток используется метод LoadFromFile: Procedure LoadFromFile(const FileName: string); файл поток класс метод И аналогичный метод для записи содержимого потока в файл: Procedure SaveToFile(const FileName: string); метод для чтения информации из другого потока вне зависимости от его типа, а также метод записи хранимой информации в другой поток: Procedure LoadFromStream(Stream: TStream); Procedure SaveToStream(Stream: TStream); Также, для потоков, работающих с оперативной памятью, определена операция очистки содержимого с помощью метода Clear: Procedure Clear; Заключение Потоки, описанные выше играют большую роль при создании проектов для работы с файлами и информацией, а так же являются неотъемлемой частью при работе с файловой структурой. Разработанное приложение отражает основные функции потоков TFileStream и TmemoryStream, демонстрирует способы чтения/записи файлов с помощью данных потоков. Я считаю что в теоретической части курсовой тема потоков раскрыта полностью и предоставляет всю необходимую информацию для их использования. Список использованных источников 1. М. Фленов Библия Delphi/ М.Е. Флеонов-СПб.: БХВ-Петербург, 2007. -880с. 2. Http://proclub.ru –Клуб программистов. 3. Http://life-prog.ru –Языки программирования. 4. Http://Delphimaster.ru - Мастера DELPHI 5. http://www.delphi.3dn.ru - Архив материалов - Всё о delphi 6. http://www.delphiplus.org - Новости о языке программирования 7. http:// www.delphiexpert.ru – Материал о Delphi 8. http:// delphiworld.narod.ru - Материал о Delphi 9. http:// www.delphirus.com - Материал о Delphi 10. http:// www.delphibasics.ru - Справочник - "Основы Delphi" Приложение В ходе выполнения курсовой работы было создано программное приложение «Streams.exe». Рисунок 1- Интерфейс программы Streams.exe |
|||||||||||||||||||||||||||||
|