Что нового

Выдает ошибку при запуске скрипта

st1ck_mAn

Новичок
Сообщения
11
Репутация
0
собственно в скрипте юзается вот такой код:
$left='0'
$top='0'
$right='1280'
$bottom='1024'
$color='0xC0CF31'
$pos = PixelSearch ( $left, $top, $right, $bottom, $color)
MouseClick("primary", $pos[0], $pos[1])
и при выполнении (в самом AutoIt) вылетает такая вот ошибка:
bot2.au3 (11) : ==> Subscript used with non-Array variable.:

Что-то связанное с массивом, прошу объяснить что надо сделать.
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Автор
S

st1ck_mAn

Новичок
Сообщения
11
Репутация
0
Спасибо!
Изменил на $Array, вроде бы работает, даже в .exe
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Garrett
Вроде как массив. Из справки (старо-русской):
PixelSearch
Возвращаемое значение
Массив из двух членов, указывающих (x,y) координаты найденного пиксела.

Скорее всего надо проверку массива прикрутить. Эта ошибка может возникнуть и в том случае, если если в функция PixelSearch ничего не получит, и в массив ничего не запишется.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
{CodeWarn}
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Ну, вот
Этот же код, только $color='0x000000'
Код:
$left='0'
$top='0'
$right='1280'
$bottom='1024'
$color='0x000000'
$pos = PixelSearch ( $left, $top, $right, $bottom, $color) 
MouseClick("primary", $pos[0], $pos[1])
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
st1ck_mAn [?]
Изменил на $Array, вроде бы работает, даже в .exe
Чудеса, да и только! :laugh: Да изменяйте имя переменной, как вам угодно, если PixelSearch не нашёл pixel заданного цвета, то он не возвращает массив. Autoit поэтому и говорит вам что переменная $pos^ ERROR не является массивом, и даже галочкой ^ указывает вам на позицию в коде, где он столкнулся с проблемой!!!
Вы же к $pos обратились как к массиву, а она оказалась Number.

Но что такого сложного, прочитать вдумчиво справку! Ребята вы меня удивляете :shok:

PixelSearch
- в случае успеха возвращает массив с координатами первого найденного pixel`я Array[0] = x, Array[1] = y
- в случае провала возвращает 0 и устанавливает макрос @error в значение 1

Yuriy [?]
Вроде как массив.
В случае успеха! ;)

Скорее всего надо проверку массива прикрутить.
Можно и так, всё зависит от задачи.
 
Верх