Запись и чтение объекта TPersistent в поток



Автор: Mystic
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Запись/чтение объекта TPersistent в поток
Пара функций, выполняющих запись/чтение объекта,
порожденного от TPersistent, в поток.
ВНИМАНИЕ! Код этих процедур основан на VCL пятой версии Delphi.
Вполне возможно, что в последующих версиях Delphi он работать не будет!
Зависимости: Classes
Автор:       Mystic, [email protected], 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.

Далее: Изменить приоритет главного потока приложения »»