Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Пройтись по массиву

Ответить
Настройки темы
[решено] Пройтись по массиву

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Люди добрые скажите что это за ошибка:
Код: Выделить весь код
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 ставлю число то всё работает.
Что может быть?

-------
Хочу научиться писать драйвера на с++


Отправлено: 21:21, 18-03-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:53, 18-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Пройтись по массиву

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как присвоить элементы массива в "перетасованном" виде другому массиву? evg64 AutoIt 3 27-09-2009 14:09
Народ, Хеллп по рейд массиву!!!! MaN_odessa Общий по FreeBSD 3 25-07-2007 08:26
Проблема с доступом к Raid-массиву pradik18 Microsoft Windows 2000/XP 11 09-02-2007 12:52




 
Переход