Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Иллюстрированный самоучитель по Delphi 6 / Часть II . Язык Object Pascal / Файлы /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Объектная модель работы с файлами - Программирование от RIN.RU
Объектная модель работы с файлами

В Delphi используется абстрактный класс TStream (поток данных), который является основой для работы с файлами как с объектами. В случае объектов совершенно не важно, что именно является носителем информации - дисковый ли файл, ленточный носитель или оперативная память. В специализированных потомках TStream определены стандартные методы Read, write и seek, открывающие полный доступ к файловому объекту. Сам объект создается конструктором и уничтожается деструктором.


Примечание

Поток не, учитывает специфику хранящихся в файле данных, т. е. по существу работает с данными, как если бы хранились в не типизированном файле.


В следующем примере файл с именем, хранящимся в Editl.Text, копируется В файл Edit2 . Text.


procedure TFormI.CopyFileClick(Sender:TObject) ;
var
Streami, Stream2: TStream;
begin
Streami:=TFileStream.Create(Editi.Text,
fmOpenRead or fmShareDenyWrite) ;
try
Stream2 :=TFileStream.Create(Edit2.Text,
fmOpenCreate or fmShareDenyRead);
try
Stream2.CopyFrom(Streami, Streami.Size);
finally
Stream2.Free;
finally
Stream1.Free
end;


Абстрактный класс т Stream лишь декларирует ключевые методы Read и write, которые перекрываются в его наследниках для специализации операций:


  • TFileStream - обмен данными с файлом;

  • TStringStream - обмен данными с длинной строкой (в памяти);

  • TMemoryStream - обмен данными с памятью;

  • TBLOBStream - чтение/запись полей данных типаBLOB (Binary Large Object - большой двоичный объект;

  • TWinsocketStream - обмен данными с сокетным подключением;

  • TOLEStream - обмен данными в формате OLE.


Любой наследник получает в свое распоряжение метод copyFrom, с помощью которого он может прочитать содержимое другого потока. Таким способом можно, например, файловые данные расположить в памяти или наоборот - содержимое памяти записать в дисковый файл.


Точно так же от TStream наследуются множество других полезных методов, в том числе:


  • Seek - пропускает нужное количество байт от текущей позиции потока;

  • ReadBuffer - читает из буфера в поток нужное количество байт;

  • Readcomponent - читает свойства компонента из потока;

  • WriteBuffer - записывает в поток содержимое буфера заданной длины;

  • WriteComponent - записывает в поток свойства компонента.


Следующий обработчик bbRunciick выведет в редактор mmOutput свойства кнопки bbRun:


procedure TfmExample.bbRunClick(Sender: TObject);


var
MemSourceStream, MemDestStream: TMemoryStream;
begin
MemSourceStream := TMemoryStream.Create;
try
MemDestStream := TMemoryStream.Create;
try
MemSourceStream.WriteComponent(bbRun);
MemSourceStream.Seek(0, soFromBeginning) ;
ObjectBinaryToText(MemSourceStream, MemDestStream);
MemDestStream.Seek(0, soFromBeginning) ;
mmOutput.Lines.LoadFromStream(MemDestStream) finally
MemDestStream.Free
end;
finally
MemSourceStream.Free
end;
end;




Комментарий к программе


Вначале свойства компонента записываются в поток MеmSourceStream. Чтобы полученным таким образом двоичным данным придать "читабельный" вид, используется процедура ObjectBinaryToText, которая преобразует данные из MemSourceStream и помещает иx в MemDestStream. Содержимое этого второго потока и выводится


В окне mmOutput. Вид окна работающей программы представлен на рис. 11.2.



Рис. 11.2. Свойства компонента bbRun




 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь