我已經繼承了一個ASP項目,並且我是一個PHP編碼器,沒有ASP知識。很抱歉,如果這篇文章冗長,我只想盡可能多地提供信息。ASP數組元素爲空,並將字符串轉換爲長
我正在努力處理這一塊代碼。
Dim resultArray As String()
For Each resultitem In resultArray
' Do something with each element of the array
hash.Add(dllFunctionObj.ReturnTemplateField(i), resultitem)
i = i + 1
Next
錯誤:
Exception!!: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
解決辦法似乎很簡單。檢查resultitem
是否爲空然後中斷或跳到下一個元素。
所以,我想這一點:
If IsNull(resultitem) Then
Break
End If
錯誤:
BC30451: Name 'IsNull' is not declared.
我想我在網上找到其他幾個備選方案:
IsEmpty(resultitem)
- 爲IsEmpty沒有宣佈String.IsNullOrEmpty(resultitem)
- 索引超出範圍錯誤,似乎沒有任何效果resultitem Is Nothing
- 索引越界Not (Len(resultitem) > 0)
的 - 索引越界Len(resultitem) = 0
- 出界
似乎接近的唯一的事情就是指數:
If Not resultitem Then
Break
End If
錯誤:
Exception!!: Conversion from string "some_string_here" to type 'Long' is not valid.
如果我使用的Next
代替Break
我得到這個錯誤:
If Not resultitem Then
Next
End If
錯誤:
BC30081: 'If' must end with a matching 'End If'.
幫助!
我要包括的代碼全部塊的情況下,它是有幫助的
Dim isResultArray As Boolean
isResultArray = methodInf.ReturnType.IsArray()
If isResultArray Then
Dim resultArray As String()
'*** Invoke the dll function
resultArray = methodInf.Invoke(REMem, args.ToArray)
Dim i As Integer = 0
For Each resultitem In resultArray
If Not resultitem Then
Response.Write("Found null value.")
Exit For
End If
Response.Write("i: " & i & "<br />")
hash.Add(dllFunctionObj.ReturnTemplateField(i), resultitem)
i = i + 1
' i = 6 will cause Get Constituent Name to work
'If i = 6 Then
' Exit For
'End If
Next
outputArray.Add(hash)
Else
'*** could be boolean, string, long etc.
Dim result As String
'*** Invoke the dll function
result = methodInf.Invoke(REMem, args.ToArray)
hash.Add(dllFunctionObj.ReturnTemplateField(0), result)
outputArray.Add(hash)
End If
在我看來,當試圖從ReturnTemplateField(i)獲取一個值爲null時,「索引超出範圍」,這不是因爲resultitem爲空 – Constanta 2013-02-15 16:51:47
+1包括您自己嘗試的值(甚至是如果這是錯誤的)。大多數時候,當我看到類似這樣的帖子時,他們沒有表現出OP的這麼多努力。 – jadarnel27 2013-02-15 17:12:37
我認爲你需要調查什麼ReturnTemplateField(共享一些更多的代碼?),並找出你想要做什麼與散列如果ReturnTemplateField(i)爲null。你總是可以做一些像If Not IsNothing(dllFunctionObj.ReturnTemplateField(i))然後hash.Add(dllFunctionObj.ReturnTemplateField(i),resultitem)End If但你可能需要知道爲什麼你的ReturnTemplateField中沒有任何東西(i) – Constanta 2013-02-15 17:57:25