当控制退出循环时,vbscript中的动态数组将被清除

时间:2015-04-08 16:46:35

标签: vbscript qtp

我是VBScript的新手。我正在尝试在VBScript中的动态数组概念下面是我的代码。 代码:

dim arr()
For i = 0 To 3
    Redim arr(i+1,2)
    arr(i,0)=i
    arr(i,1)=i+1
    MsgBox arr(i,0)&"-"&arr(i,1)
Next
For i = 0 To UBound(arr)
    MsgBox arr(i,0)&" "&arr(i,1)
Next

一旦控制进入第二个循环,存储在arr中的所有值都将丢失。我不明白为什么以及如何?我已经尝试添加Preserve关键字,但它会将下标超出范围错误。 TIA !!!

1 个答案:

答案 0 :(得分:1)

[oops,错过了两个维度] 使用ReDim Preserve代替普通ReDim。 (并删除Dim语句中的()。) [/糟糕]

你只能增长动态数组(不是固定数组,用(n [,m,..])调暗)。更维度的数组只能增长最后一个维度(docs)。所以:

选项明确

ReDim arr(1, -1) ' <-- dynamic
Dim i
For i = 0 To 3
    ReDim Preserve arr(1, i) ' last dim grows
    arr(0, i) = i
    arr(1, i) = i + 1
Next
For i = 0 To 3
    WScript.Echo i & ":", arr(0, i), arr(1, i)
Next

输出:

cscript 29520636.vbs
0 0 1
1 1 2
2 2 3
3 3 4