有没有办法在OleVariant中传递一个包装并解开TObject后代?我正在尝试通过自动化对象传递TObject。我知道这不是一个好主意,但我没有一个好的选择。将对象作为OleVariant在Delphi中投射对象
该对象是从同一个自动化DLL的对象之间传递,如果这有什么区别。
事情是这样的:
function GetMyObjAsVariant;
var
MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
result := OleVariant(MyObj);
end;
这会被客户端作为
var
MyObj: TMyObj;
begin
MyObj := GetMyObjAsVariant as TMyObj;
end;
这编译失败,返回
E2015 Operator not applicable to this operand type.
如上所述:这只适用于相同的过程。所以只有在进程COM对象(DLL)! – 2010-05-05 11:47:11
这是我一直在寻找的黑客!其他答案也很好,但这符合我的迫切需求,谢谢。 – 2010-05-05 21:08:57
如果它是一个进程中的COM DLL,那么你为什么要首先限制自己到OLEVariant?如果提供调度接口(对于自动化客户端),则只需遵守自动化兼容类型。使用进程内COM DLL,我认为您可以选择退出自动化类型安全并直接传递TObject。但是,自从我在这个层面上完成COM以来,我已经有很长一段时间了,所以我可能会记错。 – Deltics 2010-05-05 21:54:35