我正在用头撞墙。首先,我无法将正确的 ArrayLists 添加到 ArrayList;它不断在迭代中添加最后一个 ArrayList 并覆盖前一个。
这就是它应该的样子:
ArrayList testCaseList:ArrayList 包含多个 tTestCase ArrayLists ArrayList tTestCase:ArrayList 包含多个 tempArray 数组 Array tempArray:数组包含两个字符串条目(从 Excel 文件中读取)
以下是相关代码:
'The ArrayList with ArrayLists (test cases):
Dim testCaseList : Set testCaseList = CreateObject("System.Collections.ArrayList")
'Temporary ArrayList containing test cases:
Dim tTestCase : Set tTestCase = CreateObject("System.Collections.Arraylist")
Set my_sheet = ExcelObject.sheets.item(testCaseSheet)
'Function that reads the test cases from the Excel file:
Function getTestsCaseActions (row, col)
Do While my_sheet.cells(row, 2).Value <> ""
'The first array to add to tTestCase:
tempArray = array(my_sheet.cells(row, 2), my_sheet.cells(row, 3))
tTestCase.Add tempArray
'Go through the rows and columns and get the rest of the arrays to add:
Do While my_sheet.cells(row, col).Value <> ""
tTestCase.Add array(my_sheet.cells(row, col), my_sheet.cells(row+1, col))
col = col+1
Loop
'We now have a tTestCase ArrayList complete with the test case arrays.
'Test print the arrays in the tTestCase Arraylist:
'Dim i
'For i=0 To tTestCase.Count-1
' MsgBox tTestCase(i)(0) & " -> " & tTestCase(i)(1) 'Works fine.
'Next
'Add the tTestCase ArrayList to the testCastList ArrayList:
testCaseList.Add tTestCase
'Test:
MsgBox testCaseList.count 'This LOOKS right - the count increases for each iteration
Dim y
For y=0 To testCaseList.Count-1
MsgBox "Added to testCaseList: " & testCaseList(y)(0)(0)
Next
'But no. This is how the printout looks for each iteration:
'Iteration 0: TC01
'Iteration 1: TC02
' TC02
'Iteration 2: TC03
TC03
' TC03
tTestCase.Clear
row = row+2
col = 4
Loop
End Function
getTestsCaseActions 3, 4
'MsgBox testCaseList.Count 'This shows 3, which appears correct...
'MsgBoc testCaseList(0).Count 'But this shows zero...? Should be 5...
正如我在代码注释中提到的,为每次迭代测试 tTestCase ArrayList 表明数据已正确读取并存储到其中。
但是当我将 tTestCase ArrayList 添加到 testCaseList ArrayList 时,它不起作用。在第一次迭代中,它添加了第一个 tTestCase 一次。到现在为止还挺好。然后在第二次迭代中,它添加了第二个 tTestCase 两次,显然覆盖了第一个。然后在第三次迭代中也是如此:它添加了第三次 tTestCase 三次,显然覆盖了现有的。
除此之外,如果我尝试在函数的外部访问 testCaseList - 甚至在函数中但在循环之外,计数显示 3(这是从 Excel 文件创建的 tTestCases 的数量),但它们的计数再次为 0 . 所以,除了空的arraylists之外什么都没有。这我不明白,因为 ArrayLists 是在函数之外启动的?
显然,这里有一些与在 ArrayLists 中写入和存储相关的内容我不明白。但我一直无法找到很多相关信息 - ArrayList 在 vbscript 中没有广泛使用吗?(也许因为它是一个 .NET 对象?)