Is there a way to pass a wrap and unwrap a TObject descendent in an OleVariant? I am trying to pass a TObject across automation objects. I know it’s not a good idea but I don’t have a good alternative.
The object is to be passed between objects from the same automation dll, if that makes any difference.
Something like this:
function GetMyObjAsVariant;
var
MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
result := OleVariant(MyObj);
end;
Which would be used by a client as
var
MyObj: TMyObj;
begin
MyObj := GetMyObjAsVariant as TMyObj;
end;
This fails to compile, returning
E2015 Operator not applicable to this operand type.
If you absolutely, really want to, and you know for sure both objects are in the same process, you can cast any TObject to an Integer and then back to an TObject:
and then: