- Код: Выделить всё
{ TAddData }
TAddData=class(TComponent)
private
FTest: String;
published
property Test:String read FTest write FTest;
end;
{ TSaveData }
TSaveData=class(TComponent) //Класс который буду сохранять
private
procedure WriteAddProp(Writer: TWriter);
public
procedure DefineProperties(Filer: TFiler); override;
end;
implementation
{ TSaveData }
procedure TSaveData.WriteAddProp(Writer: TWriter);
begin
Writer.WriteComponent(TAddData.Create(Self)); //Пытаюсь записать еще один компонент. При вызове других свойств (WriteInteger и т.п.) всё нормально
end;
procedure TSaveData.DefineProperties(Filer: TFiler);
begin
inherited DefineProperties(Filer);
Filer.DefineProperty('AddProp', nil, @WriteAddProp, True);
end;
Само сохранение:
- Код: Выделить всё
procedure TForm1.Button1OnCLick(Sender: TObject);
var
MemStream:TMemoryStream;
TxtStream:TStringStream;
begin
MemStream:=TMemoryStream.Create;
MemStream.WriteComponent(TSaveData.Create(self)); //При записи всё нормально
MemStream.Position:=0;
TxtStream:=TStringStream.Create('');
LRSObjectBinaryToText(MemStream, TxtStream); //Здесь возникает ошибка
Memo1.Text:=TxtStream.DataString;
end;
Возникает ошибка "Stream read error". Это я делаю что-то не так или это баг?