2016-01-06 136 views
0

我有一個DLL(當前無法訪問),其中函數返回一個Variant()在VB6中處理Variant類型的正確方法是什麼?

這個變體在理論上應該返回一個錯誤數組(如果發生這種情況)。

昏暗iresult

iresult = object.functioncall()

我試圖抓住這個結果集,無論是空。我得到現在的問題是這樣的:????

類型名稱(iresult)
變()
UBOUND(iresult)
LBOUND(iresult)
的isEmpty(iresult) 假
?ISNULL(iresult)

?IsArray的(iresult)

任何嘗試進入iresult(1)或iresult(0)或通過循環會給我一個下標超出範圍的錯誤。我可以解決數組是空的,但如果它包含我需要得到它的東西。

歡迎任何建議。謝謝。

+0

只是要清楚,調用程序也是VB6? – Jeremy

+0

是的,也是VB6,一個可執行文件。 – KonB

+0

你可以試試Dim iresult()作爲變體嗎?也許它感到困惑。 – Jeremy

回答

0

訪問代碼後,我意識到問題的一部分是返回的數組是二維的。但是我無論如何都是在欺騙,因爲陣列可能會變空,Variant不會識別它爲空或爲空。

通過重申通過返回的變體(它總是作爲數組返回或排序),我趕上「超出範圍」的錯誤,並與我的代碼之一。如果它重申,那麼我會好起來的。

感謝您的幫助。

+1

空,空等是特殊值,所以如果你不使用它們,那麼當然檢查這些值是行不通的。相反,你似乎正在返回一個無意義的數組,這更難以直接檢測。有幾種可能的「治療方法」,但是以單行方式解釋它們並不容易。異常處理的作品,但這裏沒有任何神祕的事情發生。你沒有Variant函數,你有一個Variant數組函數。用尤達大師的話說:「這就是你失敗的原因。」 – Bob77

+0

有道理。這已經比我想知道的VB6陣列更多了。 – KonB

相關問題