当控制退出循环时,vbscript 中的动态数组被清除
Dynamic array in vbscript gets cleared when control comes out of loop
我是 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!!!
[糟糕,错过了二次元]
使用 ReDim Preserve
而不是普通的 ReDim
。 (并去掉 Dim
语句中的 ()。)
[/oops]
您只能增长动态数组(不能增长固定数组 Dimmed with (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
我是 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!!!
[糟糕,错过了二次元]
使用 ReDim Preserve
而不是普通的 ReDim
。 (并去掉 Dim
语句中的 ()。)
[/oops]
您只能增长动态数组(不能增长固定数组 Dimmed with (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