2015-06-08 3 views
0

Я только начал изучать Autoit, и у меня возникли проблемы с пониманием инструкции while.Определение While While

Я пытаюсь создать сценарий, который предназначен для перехода на другой сайт, когда отображается изображение «a.bmp». Изображение «a.bmp» будет значком определенного сайта.

Так ниже сценарий сделан воспринимать фавиконки 'a.bmp'

$ поиска = _ImageSearch ('a.bmp', 0,0,0,0) Хотя $ поиск = _ImageSearch (» a.bmp ', 0,0,0,0) Sleep (10) WEnd

Этот скрипт работает нормально. Он выходит из цикла и выполняет следующее действие, когда появляется «a.bmp». Но проблема в том, что позже я понял, что цикл while выполняется, когда выражение ($ search = _ImageSearch ('a.bmp', 0,0,0,0) является «истинным».

if определение цикла while, о котором я упомянул, верен, не следует ли, что цикл выше должен проходить через бесконечный цикл, когда появляется «a.bmp»?

Я так смущен. Буду признателен, если кто-нибудь ответы ..

ответ

2

Вы не можете присвоить значение, где, как ожидается, выражение!

While $search = _ImageSearch 

Это оленья кожа, как подпишите значение в $ search, но просто проверит, равен ли $ search равному _ImageSearch.

из файла справки:

Loop на основе выражения.

While <expression> 
    statements 
    ... 
WEnd 

Если выражение истинно, выполняются следующие операторы до выражения WEnd. Этот цикл продолжается до тех пор, пока выражение не станет ложным.

Итак, что происходит в вашем примере?

$search = _ImageSearch('a.bmp',0,0,0,0) 
While $search = _ImageSearch('a.bmp',0,0,0,0) 
Sleep(10) 
WEnd 

Первый ImageSearch терпит неудачу, и устанавливает $ поиск в 0. Под Хотя цикл у вас есть выражение $ поиска = _ImageSearch, который будет верно, если _ImageSearch снова терпит неудачу.

Базовый результат: Пока 0 = 0 Wend, и как только изображение появилось, цикл закончился.

Правильный код будет

While Not _ImageSearch('a.bmp',0,0,0,0) 
Sleep(10) 
WEnd 

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

_WaitForImageSearch('a.bmp',0,0,0,0, 30); Will wait max 30 seconds for a.bmp to appear 
Смежные вопросы