Serializar Objetos
Olá...estou fazendo um exemplo aqui, usando as funções ObjectBinaryToText e ObjectTextToBinary, quando salvo o objeto em txt, gero um arquivo e todas as propriedades do objeto estão no arquivo corretamente....quando carrego o arquivo e quero transformálo em um objeto novamento...ocorre o erro de Class not Found...
Estou mando uma parte do código para ficar mais claro...
Grato pela atenção!
function StringParaComponente(Value : TStrings) : TComponent;
var
wComStream : TMemoryStream;
wStrStream : TStringStream;
begin
try
wStrStream := TStringStream.Create(Value.Text);
try
wComStream := TMemoryStream.Create;
try
ObjectTextToBinary(wStrStream,wComStream);
wComStream.Seek(0,soFromBeginning);
Result := wComStream.ReadComponent(nil); { Ocorre erro aqui.}
finally
FreeAndNil(wComStream);
end;
finally
FreeAndNil(wStrStream);
end;
except on wErro : Exception do
messagedlg(wErro.Message + #13 + wErro.ClassName,mtError,[mbOK],0);
end;
end;
// Aqui tudo certo..
function ComponenteParaString(Componente : TComponent) : TStrings;
var
wComStream : TMemoryStream;
wStrStream : TStringStream;
wAux : String;
begin
wComStream := TMemoryStream.Create;
try
wStrStream := TStringStream.Create(wAux);
try
wComStream.WriteComponent(Componente);
wComStream.Seek(0,soFromBeginning);
ObjectBinaryToText(wComStream,wStrStream);
wStrStream.Seek(0,soFromBeginning);
Result := TStringList.Create;
Result.text := wStrStream.DataString;
finally
FreeAndNil(wStrStream);
end;
finally
FreeAndNil(wComStream);
end;
end;
Estou mando uma parte do código para ficar mais claro...
Grato pela atenção!
function StringParaComponente(Value : TStrings) : TComponent;
var
wComStream : TMemoryStream;
wStrStream : TStringStream;
begin
try
wStrStream := TStringStream.Create(Value.Text);
try
wComStream := TMemoryStream.Create;
try
ObjectTextToBinary(wStrStream,wComStream);
wComStream.Seek(0,soFromBeginning);
Result := wComStream.ReadComponent(nil); { Ocorre erro aqui.}
finally
FreeAndNil(wComStream);
end;
finally
FreeAndNil(wStrStream);
end;
except on wErro : Exception do
messagedlg(wErro.Message + #13 + wErro.ClassName,mtError,[mbOK],0);
end;
end;
// Aqui tudo certo..
function ComponenteParaString(Componente : TComponent) : TStrings;
var
wComStream : TMemoryStream;
wStrStream : TStringStream;
wAux : String;
begin
wComStream := TMemoryStream.Create;
try
wStrStream := TStringStream.Create(wAux);
try
wComStream.WriteComponent(Componente);
wComStream.Seek(0,soFromBeginning);
ObjectBinaryToText(wComStream,wStrStream);
wStrStream.Seek(0,soFromBeginning);
Result := TStringList.Create;
Result.text := wStrStream.DataString;
finally
FreeAndNil(wStrStream);
end;
finally
FreeAndNil(wComStream);
end;
end;
_nobody_
Curtidas 0
Respostas
Massuda
22/05/2005
...ocorre o erro de Class not Found...
Imagino que o objeto que você está serializando é de alguma classe sua; nesse caso, na inicialização da unit que contem sua classe, inclua...initialization RegisterClass(TSuaClasse);
GOSTEI 0