-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
morgan1991 |
18-03-2009 21:21 1067655 |
Пройтись по массиву
Люди добрые скажите что это за ошибка:
Код:
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 ставлю число то всё работает.
Что может быть?
|
Попытка чтения элемента после его удаления. Т.е элемент не существует, а в цикле происходит попытка его использовать. Нужно в таком случае обрабатывать в обратном порядке:
Код:
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
|
Время: 03:24.
© OSzone.net 2001-