有沒有辦法在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