2015-05-27 34 views
0

C#代碼:無法從COM對象最後的錯誤在C#

bvt = Activator.CreateInstance(Type.GetTypeFromProgID("xxx.BVT")); 

// calling a function that terminates with an error 
bvt.GiveMeAnError(); 

var msg = ""; 
long number = 0L; 
bvt.GetLastError(number, msg); 

result = "Errornumber:"+ number + " Errormessage:"+ msg; 

結果是:

「Errornumber:0 ERRORMESSAGE:」

我的問題是功能GetLastError()。在執行此功能後,Numbermsg應包含errornumbermessage。但他們仍然是empty

有人可以幫我嗎?

*編輯*

我執行以下代碼如VBScript:

Dim StdOut 
Set StdOut = WScript.StdOut 
Set bvt = CreateObject("xxx.BVT") 

bvt.GiveMeAnError() 

bIsLastErr = bvt.GetLastError(ErrNo, ErrMsg) 
StdOut.WriteLine("Erronumber: " & ErrNo & ", Errormessage: " & ErrMsg) 

這VBScript中cscript的是工作的罰款。我也收到錯誤消息和數字。所以GetLastError()方法起作用。

+0

你剛剛實例化你的對象,而不需要調用它的任何成員。爲什麼它應該已經有一個錯誤? – nlips

+0

發佈'GetLastError'方法 – Shaharyar

+0

嗨nlips,對不起,我忘了。我在實例化對象後調用一個函數。該功能(肯定)以錯誤終止。 – JackDaniels

回答

0

您需要通過引用傳遞的變量,因爲它們可以在方法顯然設置:

bvt.GetLastError(ref number, ref msg); 
1

謝謝CodeCaster!

問題是「var」和「long」。當然你必須通過引用來傳遞變量。這裏是我的工作代碼:

object number = null; 
object msg = null; 

// ... do some stuff with Errors ... 

bvt.GetLastError(ref number, ref msg); 

return "" + number.ToString() +" - " + msg.ToString() + "\n";