Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Пройтись по массиву (http://forum.oszone.net/showthread.php?t=135127)

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 ставлю число то всё работает.
Что может быть?

Creat0R 18-03-2009 22:53 1067747

Цитата:

Цитата morgan1991
Что может быть? »

Попытка чтения элемента после его удаления. Т.е элемент не существует, а в цикле происходит попытка его использовать. Нужно в таком случае обрабатывать в обратном порядке:

Код:

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.

Время: 03:24.
© OSzone.net 2001-