我有一個接口使用DCOM技術。
接口中定義的所有方法都有safecall
指令。
但是,在客戶端,我想在TObject中反映這個對象,以避免每次需要閱讀它時都使用該接口。接口safecall,實現不safecall
例如
IMyInterface = interface(IDispatch);
procedure Set_fA(const Value: WideString); safecall;
function Get_fA: WideString; safecall;
end;
該接口由一個TAutoIntfObject
實現的,在這種情況下,實施保持safecall
指令
TMyAuto = class(TAutoIntfObject, IMyInterface)
private
fA : WideString;
public
procedure Set_fA(const Value: WideString); safecall;
function Get_fA: WideString; safecall;
end;
但是現在,隨着TObject的如果我刪除safecall:
TMyObject = class(TObject, IMyInterface)
private
fA : WideString;
public
procedure Set_fA(const Value: WideString); //??
function Get_fA: WideString; //??
procedure CopyFromServer(Original: OleVariant);
end;
編譯器生成以下錯誤: 「Set_fA的聲明與接口IMyObject中的聲明不同」
我可以正常使用帶safecall的TObject,如果我保持這種方式會有什麼麻煩嗎?
有任何情況下,safecall使所有的差異,而不是cdecl?
我這樣做的原因是因爲我想避免每次需要讀取TMyAuto
實例屬性時轉移到服務器。
TMyObject不執行IDispatch –