Что нового

цикл for...to отрабатывает в 2 раза больше положенного

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
собственно вот скрипт в нем условие If $pixNO == $pixGet Thenотрабатывает 4 раза и условие Else тоже 4 раза, а сам цикл повторяется 14 раз хотя задумывалось как на 8 раз подскажите где ошибка?

Код:
Global $mail = 'mail'
Global $mailHead = '12345'
Sleep(3000)
_mailKladovshitsa()

Func _mailKladovshitsa()
    $kladovshitsa = 'Кладовщицаа'
    $pixNO = 0xDA9C2B
    Sleep(5000)
    Send($mail)
    Sleep(3000)
    Send('{Enter}')
    Sleep(5000)
    MouseClick('left',447,324,1) ;отправить
    Sleep(5000)
    Send($kladovshitsa)
    Sleep(3000)
    Send('{Enter}')
    Sleep(5000)
    Send('{TAB}')
    Sleep(2000)
    Send($mailHead)
    for $i = 0 to 7
        Sleep(3000)
        _MouseClick()
        $pixGet = PixelGetColor (328,271);поиск пикселля
        Sleep(3000)
        If $pixNO == $pixGet Then
            MouseClick('left',681,351,1) ;все
            Sleep(2000)
            MouseClick('left',409,358,1) ;подтвердить
            Sleep(3000)
        Else
            _MouseClick()
        EndIf
    Next
    Sleep(3000)
    MouseClick('left',528,519,2); отправить
    Sleep(3000)
    MouseClick('left',476,357,1); подтвердить отправить
    Sleep(70000)
EndFunc

Func _MouseClick()
    MouseClick('left',401,382,2);3
    Sleep(3000)
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
Где ведётся подсчёт того, сколько раз отработал цикл?
Другими словами, с чего ты взял что он отрабатывает больше положенного?


Добавлено:
Сообщение автоматически объединено:

„Выкидываем“ всё лишнее и видим, что цикл отрабатывает столько, сколько указанно:

Код:
_mailKladovshitsa()

Func _mailKladovshitsa()
	For $i = 0 To 7
		ConsoleWrite($i & @LF)
	Next
EndFunc
 

jilexandr

Знающий
Сообщения
129
Репутация
6
какой нечитабельный код :laugh:

тоже 4 раза а сам цикл повторяется 14 раз тоже не понятно ничего

не понятно что он делает, но может из цикла нужно лишнее убрать?
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
CreatoR [?]
Другими словами, с чего ты взял что он отрабатывает больше положенного?

Фактически это кликер при верном значении If...Then он выполняет ряд последовательных кликов, при выполнении Else он кликает только один раз, завершается функция двумя кликами. после прохода цикла в 8 раз он продолжает кликать еще 6 раз только после этого он завершает работу. Не магу понять почему :(
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
general66 [?]
после прохода цикла в 8 раз он продолжает кликать еще 6 раз только после этого он завершает работу
Ну клики же зависят от условия, я насчитал 24 потенциальных кликов (при выполнении условия «If $pixNO == $pixGet Then»), ну и минимум 16 (когда условие не совпадает).

Т.ч ничего удивительного :smile:.
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
CreatoR [?]
Ну клики же зависят от условия, я насчитал 24
подскажите пожалуйста как сделать чтоб мое выражение
If ... Then
....
Else
....
со всеми кликами в рамках одного цикла выполнялось определенное точное количество раз
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
general66 [?]
подскажите пожалуйста как сделать чтоб мое выражение If ... Then....Else....со всеми кликами в рамках одного цикла выполнялось определенное точное количество раз
у тебя и так выполняется определенное кол-во раз – 7. сколько из них отводится на If, а сколько на Else зависит от условий. и тот и другой по 7 раз выполняться не могут. либо ты что-то ошибочно смотришь, либо в коде есть что-то еще, чего ты не привел.

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

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
general66
Мне так кажется (на 99%), что твоя проблема в том, что
в твоем цикле Всегда (на каждом проходе) вызывается функция _MouseClick()
без каких либо условий. Вот и все.
Добавлю. Тут:
Код:
for $i = 0 to 7
        Sleep(3000)
        _MouseClick()
        $pixGet = PixelGetColor (328,271);поиск пикселля
        Sleep(3000)
 
Автор
G

general66

Пришел увидел наследил
Сообщения
211
Репутация
3
Yuriy [?]
Мне так кажется (на 99%), что твоя проблема в том

совершенно верно только заметил сам, целый день смотрел а видел...

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

прошу прощения за пост, начал по построчно описывать подробно что делает мой скрипт и нашел банальную ошибку . Можно удалить тему так как она не несет ни чего полезного и познавательного . еще раз прошу прощения за нубство.
 
Верх