UBPFD *********** by delphibase

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Запись/чтение объекта TPersistent в поток

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

ВНИМАНИЕ! Код этих процедур основан на VCL пятой версии Delphi.
Вполне возможно, что в последующих версиях Delphi он работать не будет!

Зависимости: Classes
Автор: Mystic, mystic2000@newmail.ru, ICQ:125905046, Харьков
Copyright: (c) Mystic
Дата: 25 января 2003 г.
***************************************************** }

unit PersistentIO;

interface

uses Classes;

procedure WritePersistent(S: TStream; Instance: TPersistent);
procedure ReadPersistent(S: TStream; Instance: TPersistent);

implementation

type
TMyWriter = class(TWriter)
public
procedure WritePersistent(Instance: TPersistent);
end;

procedure TMyWriter.WritePersistent(Instance: TPersistent);
begin
WriteProperties(Instance);
WriteListEnd;
end;

type
TMyReader = class(TReader)
public
procedure ReadPersistent(Instance: TPersistent);
end;

procedure TMyReader.ReadPersistent(Instance: TPersistent);
begin
while not EndOfList do
ReadProperty(Instance);
ReadListEnd;
end;

procedure WritePersistent(S: TStream; Instance: TPersistent);
var
Writer: TMyWriter;
begin
Writer := TMyWriter.Create(S, 4096);
try
Writer.WritePersistent(Instance);
finally
Writer.Free;
end;
end;

procedure ReadPersistent(S: TStream; Instance: TPersistent);
var
Reader: TMyReader;
begin
Reader := TMyReader.Create(S, 4096);
try
Reader.ReadPersistent(Instance);
finally
Reader.Free;
end;
end;

end.

Понравилась статья? Поделиться с друзьями: