Что нового

Выполнение условия каждый Н-ый цикл, как?

Petro78

Новичок
Сообщения
7
Репутация
0
Добрый вечер, Уважаемые форумчане. Как сделать выполнение какого-либо условия каждый Н-ый цикл? Например:

Код:
Global $cycle=1

WinActivate ("1")
WinWaitActive

WinActivate ("2") ;Активация окна "2" каждые последующие 5 циклов. После 5-ти циклов возврат на окно "1"
WinWaitActive

While 1
_Action1 ()
_Action2 ()
_Action3 () 
.......
$cycle=$cycle+1
Wend

Func _Action1 ()
.......
EndFunc

Func _Action2 ()
.......
EndFunc

Func _Action3 ()
.......
EndFunc
 

agikon

Знающий
Сообщения
789
Репутация
17
задача совсем не понятна.
тут надо уточнить как должны запускатся новые функции в зависимости от какого n-uj цикла.
или же просто рандомно.
вобщем надо уточнять.
 
Автор
P

Petro78

Новичок
Сообщения
7
Репутация
0
Попробую выразится понятней. 1, 2, 3, 4, 5-ые циклы выполняются функции с окном "1", а 6, 7, 8, 9, 10-ые циклы выполняются все теже самые функции с окном "2". Далее 11, 12, 13, 14, 15-ые циклы - опять все теже самые функции с окном "1" и т.д. Каждые пять циклов окно должно переключаться.
 

agikon

Знающий
Сообщения
789
Репутация
17
можно в каждую функцию цикл с определённым колличеством повторений кинуть.

Код:
While  1
_Action1()
_Action2()
_Action3()
Wend

Func  _Action1()
While 5                        ;5 gпотму что с 1 до 5
;код 1-ой функции
wend
EndFunc

Func  _Action2()
While 4                           ;4 gпотму что с 6 по 10 
;код 2-ой функции
wend
EndFunc

Func  _Action3()
While 5                         ;5 gпотму что с 11 по 15 
;код 3-ой функции
wend
EndFunc


и что вы имеете ввиду под окном?
_Action1() _Action2() это не окна, это функции.
 
Автор
P

Petro78

Новичок
Сообщения
7
Репутация
0
Не совсем, циклов может быть более 300.
 

agikon

Знающий
Сообщения
789
Репутация
17
ну делайте на 300, а здесь же лёгких путей нет.
сам код не напишется.
люди по 10 000 кода пишут.

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

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Petro78,
Если я Вас правильно понял, то попробуйте примерно так.
Код:
HotKeySet('{Esc}', '_Exit');Esc - выход
$iCount = 0
While 1
	For $i = 1 To 5
		_Action1($i)
		_Action2($i)
	Next
	For $i = 1 To 5
		_Action2($i)
		_Action3($i)
	Next
	For $i = 1 To 5
		_Action1($i)
		_Action3($i)
	Next
	$iCount += 1
	ConsoleWrite($iCount & @LF)
	If $iCount = 100 Then ExitLoop
	Sleep(20)
WEnd
MsgBox(64, 'Info', 'Все ' & $iCount)

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Func _Action1($i_Num)
	ToolTip('_Action1 ' & $i_Num, 0, 0)
	Sleep(1000)
EndFunc   ;==>_Action1

Func _Action2($i_Num)
	ToolTip('_Action2 ' & $i_Num, 0, 0)
	Sleep(1000)
EndFunc   ;==>_Action2

Func _Action3($i_Num)
	ToolTip('_Action3 ' & $i_Num, 0, 0)
	Sleep(1000)
EndFunc   ;==>_Action3
 
Автор
P

Petro78

Новичок
Сообщения
7
Репутация
0
Я думал реализовать это так, но скорее всего должен быть более простой и универсальный вариант:

Код:
Global $cycle=1

While 1

If $cycle<6 Or $cycle>10 Or $cycle<16 Or $cycle>20 Or $cycle< 26 Then WinActivate ("1") ; и так далее ...
If $cycle>5 Or $cycle<11 Or $cycle>15 Or $cycle<21 Or $cycle> 25 Then WinActivate ("2") ; и так далее ...

_Action1 ()
_Action2 ()
_Action3 ()
.......
$cycle=$cycle+1
Wend

Func _Action1 ()
.......
EndFunc

Func _Action2 ()
.......
EndFunc

Func _Action3 ()
.......
EndFunc
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Petro78 [?]
Я думал реализовать это так
неверная реализация. одними Or не обойтись. иначе твои интервалы будут перекрываться.
попробуй так
Код:
Global $cycle=1

While 1
    If Mod($cycle/5, 2) > 0 And Mod($cycle/5, 2) <= 1 Then
        WinActivate ("1")
    Else
        WinActivate ("2")
    EndIf
    _Action1 ()
    _Action2 ()
    _Action3 ()
    ;.......
    $cycle=$cycle+1
Wend

Func _Action1 ()
;.......
EndFunc

Func _Action2 ()
;.......
EndFunc

Func _Action3 ()
;.......
EndFunc
 
Автор
P

Petro78

Новичок
Сообщения
7
Репутация
0
Kaster, это то, что мне было необходимо. Сам витал вокруг этого но не смог понять какая команда мне нужна. Спасибо всем!
 
Верх