Пишу алгоритм с параллельными вычислениями. Один из объектов является разделяемым ресурсом и хотелось бы его клонировать. Объект достаточно сложный и использует другие объекты. Возникла идея применения механизма сериализации/десериализации. Примерный код ниже.
function Cloning(RootObject: TComponent): TComponent;
var
MemStream: TMemoryStream;
begin
MemStream := TMemoryStream.Create;
try
MemStream.WriteComponent(RootObject);
MemStream.Position := 0;
Result := MemStream.ReadComponent(RootObject);
finally
MemStream.Free;
end;
end;
Данный код, однако, не дает нужного результата. Исходный компонент RootObject и Result, в итоге, ссылаются на одну и ту же область памяти. Может ли уважаемое сообщество предложить какие-то решения?
Вопрос
antigrav
Здравствуйте!
Пишу алгоритм с параллельными вычислениями. Один из объектов является разделяемым ресурсом и хотелось бы его клонировать. Объект достаточно сложный и использует другие объекты. Возникла идея применения механизма сериализации/десериализации. Примерный код ниже.
function Cloning(RootObject: TComponent): TComponent;
var
MemStream: TMemoryStream;
begin
MemStream := TMemoryStream.Create;
try
MemStream.WriteComponent(RootObject);
MemStream.Position := 0;
Result := MemStream.ReadComponent(RootObject);
finally
MemStream.Free;
end;
end;
Данный код, однако, не дает нужного результата. Исходный компонент RootObject и Result, в итоге, ссылаются на одну и ту же область памяти. Может ли уважаемое сообщество предложить какие-то решения?
Ссылка на комментарий
2 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.