Запись и чтение объекта TPersistent в поток
Автор: Mystic
WEB-сайт: http://delphibase.endimus.com
{ **** 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.
|