2015-04-08 1 views
1

Я новичок в VBScript. Я пытаюсь разобраться в концепции Dynamic array в 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 

Как только управление приходит во вторую петлю все значения, хранящиеся в обр теряются. Я не понимаю, почему и как? Я попытался добавить ключевое слово Preserve, но он выдает индексирование вне диапазона. ТИА !!!

ответ

1

[oops, missing the two dimensions] Используйте ReDim Preserve вместо обычного ReDim. (И избавиться от() в заявлении Dim.) [/ oops]

Вы можете создавать только динамические массивы (не фиксированные массивы Dimmed with (n [, m, ..])). Более размерный массив может только увеличивать последнее измерение (docs). Итак:

Option Explicit

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 
+0

удаления() дает мне ошибку, как тип Рассогласуйте и я уже пробовал с Preserve keyword..it бросает Подстрочный из ошибок диапазона –

+0

Пробовал ли мой код выше в каком-то файле .vbs и работал в конце? –

+0

См. Обновление; извините за отсутствие 2 тускнеет. –