Могу ли я создать конструктор, который десериализует строковую версию моего объекта?

Я сериализую и десериализую объект (потомок TComponent), используя пример из раздела ComponentToString в файле справки Delphi. Это сделано для того, чтобы я мог сохранить объект в поле VARCHAR в базе данных.

Когда мне нужно создать новый экземпляр моего класса из строки, хранящейся в базе данных, могу ли я сделать это с помощью конструктора формы ] CreateFromString (AOwner: TComponent; AData: String) ? Или мне нужно использовать метод, не относящийся к классу, который возвращает экземпляр моего класса компонента?

Если я могу использовать версию конструктора, как «сопоставить» возвращаемое значение ReadComponent с «я» который создается конструктором?

Вот пример десериализации из файла справки:

function StringToComponentProc(Value: string): TComponent;
var
  StrStream:TStringStream;
  BinStream: TMemoryStream;
begin
  StrStream := TStringStream.Create(Value);
  try
    BinStream := TMemoryStream.Create;
    try
      ObjectTextToBinary(StrStream, BinStream);
      BinStream.Seek(0, soFromBeginning);
      Result:= BinStream.ReadComponent(nil);
    finally
      BinStream.Free;
    end;
  finally
    StrStream.Free;
  end;
end;
5
задан Donato Szilagyi 29 November 2013 в 19:58
поделиться