function Test.get_Param(out a : BOOL): HRESULT; stdcall;
begin
a := b;
Result := T_Result;
end;
現在的例外發生在a := b;
,發生訪問衝突異常。 當然,我可以嘗試並抓住它。但我不想這樣做...... 那麼有什麼方法可以確定使用某種方式,並跳過作業。像:
if (! now I know it will happening that Exception){
a := b; // so I can skip
}
Result := T_Result;
也許這很容易,但因爲我不知道使用德爾福,所以希望你們的人可以幫助我。謝謝。
UPDATE1:
b: Boolean;//Some friend need to know what is the b param type.
UPDATE2:
我嘗試使用:
if b<> nil then Enabled := b;
,但我不能建造它,它會顯示:E2008不相容的類型
UPDATE3:
我試圖調試它,當我調試,局部變量面板顯示屏上:
一個不可訪問值
我使用.NET稱之爲。有元數據:
bool get_Param{ [param: In, MarshalAs(UnmanagedType.Bool)] [PreserveSig] set; }
實際上我沒有使用.NET訪問它。我使用.NET訪問一個DirectShow濾波器,而DirectShow過濾器是當前的方法(用Delphi寫)
UPDATE4:
這部分C#代碼
[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), SuppressUnmanagedCodeSecurity, Guid("hidden")]
public interface IDCDSPFilterInterface{
bool get_Param{ [param: In, MarshalAs(UnmanagedType.Bool)] [PreserveSig] set; }
.. hidden other ..
}}
請注意SSCCE。 http://sscce.org/ – Roddy
嗨@Roddy什麼地方你不明白? – qakmak
你爲什麼要寫'如果b <> nil'? 'b'是你的'b'類型的變量。它不能是'nil',因爲它不是一個指針。 –