Что нового

Начало цикла в начале скрипта, а конец в функции

SHoCK13666

Новичок
Сообщения
108
Репутация
0
Искал на форуме, в гугле, справку читал. Почти везде цикл вызывают while и завершают wend.
У меня этот способ не подходит... Вот что надо сделать:
Код:
#include<Array.au3>
#include<IE.au3>

HotKeySet('{DELETE}', '_Exit') ; 

$oIE = _IECreate('сайт')

;тут должно быть начало цикла

MouseClick("left", 853, 78, 1)
MouseClick("left", 572, 435, 1)
Send("{1}")
MouseClick("left", Random(499, 562, 1), random(475, 477, 1))
MouseClick("left", 462, 523, 1)
Sleep(1000)

MouseClickDrag("Left",1345, 268, 1345, 516)
MouseClickDrag("Left",1345, 516, 1345, 268)

Call ( "_win")

Func _win ()
     $sText = _IEBodyReadText($oIE)
Select
Case StringInStr($sText, 'текст')
;тут конец цикла
EndSelect
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
#include<Array.au3>
#include<IE.au3>

HotKeySet('{DELETE}', '_Exit') ;

$oIE = _IECreate('сайт')

While 1
  MouseClick("left", 853, 78, 1)
  MouseClick("left", 572, 435, 1)
  Send("{1}")
  MouseClick("left", Random(499, 562, 1), random(475, 477, 1))
  MouseClick("left", 462, 523, 1)
  Sleep(1000)

  MouseClickDrag("Left",1345, 268, 1345, 516)
  MouseClickDrag("Left",1345, 516, 1345, 268)

  $sText = _IEBodyReadText($oIE)
  If StringInStr($sText, 'текст') Then ExitLoop
WEnd
MsgBox(0, "", "Нашли текст на странице - вышли из цикла")

Func _Exit()
  Exit
EndFunc
 

valldar

Новичок
Сообщения
32
Репутация
2
Или так:
Код:
#include<Array.au3>
#include<IE.au3>

HotKeySet('{DELETE}', '_Exit') ; 

$oIE = _IECreate('сайт')

;тут должно быть начало цикла
Global $break=False

While $break=False
MouseClick("left", 853, 78, 1)
MouseClick("left", 572, 435, 1)
Send("{1}")
MouseClick("left", Random(499, 562, 1), random(475, 477, 1))
MouseClick("left", 462, 523, 1)
Sleep(1000)

MouseClickDrag("Left",1345, 268, 1345, 516)
MouseClickDrag("Left",1345, 516, 1345, 268)

Call ( "_win")
WEnd

Func _win ()
     $sText = _IEBodyReadText($oIE)
Select
		Case StringInStr($sText, 'текст')
				$break=True
				Return
;тут конец цикла
EndSelect
EndFunc
 
Func _Exit()
  Exit
EndFunc
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
valldar, вот такую ошибку выдаёт
"Wend" statement with no matching "While" statement.:
WEnd
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
SHoCK13666
Думаю можно обойтись без функции. Изменил код в своём сообщении - проверяйте.
Кстати, у valldar тоже рабочий скрипт, если вы в него ничего не добавляли.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
While проверяет условие выхода по значению соответствующего флага, функция изменяет значение этого флага.
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
Функция там обязательна. Это только малая чась моего кода, в оригинале там много всего
 

valldar

Новичок
Сообщения
32
Репутация
2
2SHoCK13666
такую ошибку может выдавать если ты "сплетаешь" циклы и функции между собой, видимо ты что-то добавил в свой код и получилось подобная конструкция:
Код:
while 1 
'...'
   Func _1()
   '...'
wend
    '...'
   endfunc

; или

For $i=0 to 10
'...'
   While 1
   '...'
next
   '...'
   wend
; Короче, нельзя сплетать циклы между собой :)
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
Как раз так я и хотел сделать :smile:
Но я уже нашёл другое решение этой проблемы, всем спасибо!
 
Верх