Qtp und vbscript: ArrayList von Arraylists mit Arrays innerhalb (und auch außerhalb) eine Funktion

Ich bin schlug meinen Kopf gegen die Wand. Erstens, ich bin nicht in der Lage, die richtigen ArrayLists die ArrayList; es hält das hinzufügen der letzten ArrayList in der iteration und überschreiben Sie die Vorherige(N).

Dies ist, wie es sein soll:

ArrayList testCaseList: ArrayList mit mehreren tTestCase ArrayLists
ArrayList tTestCase: ArrayList mit mehreren tempArray Arrays
Array tempArray: Array mit zwei string-Einträge (Lesen aus einer Excel-Datei)

Hier ist der relevante code:

'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...

Als ich Erwähnung in der code-Kommentare, Test der tTestCase ArrayList, die für jede iteration zeigt, dass die Daten gelesen und gespeichert ist es richtig.

Aber wenn ich die tTestCase ArrayList, um die testCaseList ArrayList, funktioniert es nicht. In der ersten iteration, fügt es das erste tTestCase einmal. So weit, So gut. Dann in der zweiten iteration, fügt er das zweite tTestCase zweimal, offenbar überschreibt die erste. Dann ist es das gleiche in der Dritten iteration: Es fügt die Dritte tTestCase drei mal, scheinbar überschreiben die bestehende.

Zusätzlich zu dieser, wenn ich versuche, auf testCaseList AUßERHALB der Funktion - oder auch IN der Funktion, aber außerhalb der Schleife die count-zeigt 3 (das ist die Anzahl der tTestCases aus der erstellten Excel-Datei), aber Ihre Anzahl ist wieder 0. So, es ist nichts da, aber leer arraylists. Das verstehe ich nicht, da die ArrayLists initiiert werden, die außerhalb der Funktion?

Offensichtlich, es ist etwas im Zusammenhang zu schreiben und speichern in ArrayLists, dass ich nicht verstehe hier. Aber ich habe nicht in der Lage zu finden, viel relevante info über diese - ArrayList ist nicht weit verbreitet in vbscript? (Vielleicht, da es ein .NET-Objekt?)

InformationsquelleAutor | 2013-11-12

Schreibe einen Kommentar