Войти

Показать полную графическую версию : [решено] Пройтись по массиву


morgan1991
18-03-2009, 21:21
Люди добрые скажите что это за ошибка:
Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
Вылетает после этого:

For $i = 1 To $sTest_Split[0]
If $sTest_Split[$i] = "" Then _ArrayDelete($sTest_Split, $i)
Next

если тут $sTest_Split[$i] вместо $i ставлю число то всё работает.
Что может быть?

Creat0R
18-03-2009, 22:53
Что может быть? »
Попытка чтения элемента после его удаления. Т.е элемент не существует, а в цикле происходит попытка его использовать. Нужно в таком случае обрабатывать в обратном порядке:

For $i = $sTest_Split[0] To 1 Step -1
If $sTest_Split[$i] = "" Then _ArrayDelete($sTest_Split, $i)
Next

А ещё лучше (надёжнее), использовать временную переменную массива:

$aTmp_Split = $aTest_Split

For $i = 1 To $aTmp_Split[0]
If $aTmp_Split[$i] = "" Then _ArrayDelete($aTest_Split, $i)
Next

Или так:

Dim $aTmp_Split[$aTest_Split[0]+1]

For $i = 1 To $aTest_Split[0]
If $aTest_Split[$i] = "" Then

Else
$aTmp_Split[0] += 1
$aTmp_Split[$aTmp_Split[0]] = $aTest_Split[$i]
EndIf
Next

ReDim $aTmp_Split[$aTmp_Split[0]+1]
$aTest_Split = $aTmp_Split




© OSzone.net 2001-2012