Что нового

Убрать циклическое выполнение функции

iukash

Новичок
Сообщения
19
Репутация
1
В общем есть такая конструкция
Код:
GUICreate("Скрипт", 200, 100)
GUICtrlCreateLabel("Выключить скрипт?", 30, 30)
$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)

$Label = GUICtrlCreateLabel(-1, 10, 10, 50, 20)

$Time = TimerInit()
$InitTime = 20
$StopTime = 0

GUISetState()
Do
	$msg = GUIGetMsg()

    If GUICtrlRead($Label) = $StopTime Then
        GUICtrlSetData($Label, "script")
        Sleep(1000)
		mainscript()
    Else
        If GUICtrlRead($Label) <> $InitTime - Round(TimerDiff($Time)/1000, 0) Then
            GUICtrlSetData($Label, $InitTime - Round(TimerDiff($Time)/1000, 0))
        EndIf
    EndIf
Until ($msg = $okbutton) Or ($msg = -3)

которая реализует отсчет таймера на label после чего выполняет мою функцию. И выполняет ее циклически не останавливаясь. Как сделать так чтобы после выполнения функции опять начался осчет таймера. Пытаюсь в конце функции присвоить опять InitTime так GUICtrlSetData($Label, $InitTime,0) но это не помагает!
 
Автор
I

iukash

Новичок
Сообщения
19
Репутация
1
В общем для простоты написал другую функцию
Код:
Func mainscript2()
MsgBox(0,"Скрипт","Скрипт",10);
GUICtrlSetData($Label, $InitTime)
EndFunc

И циклическое выполнение исчезло, но что бы я не поставил вместо $InitTime (2000, 20000 и др) все равно отображается окно и label продолжает убывать -1 , -2, -3 и т.д.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Вот получилось, кажется.
Код:
GUICreate("Скрипт", 200, 100)
GUICtrlCreateLabel("Выключить скрипт?", 30, 30)
$okbutton = GUICtrlCreateButton("OK", 70, 50, 60)

$Label = GUICtrlCreateLabel(-1, 10, 10, 50, 20)

$Time = TimerInit()
$InitTime = 5
$StopTime = 0

GUISetState()
Do
    $msg = GUIGetMsg()

    If GUICtrlRead($Label) = $StopTime Then
        GUICtrlSetData($Label, "script")
        Sleep(1000)
        _fun1()
    Else
        If GUICtrlRead($Label) <> $InitTime - Round(TimerDiff($Time)/1000, 0) Then
            GUICtrlSetData($Label, $InitTime - Round(TimerDiff($Time)/1000, 0))
        EndIf
    EndIf
Until ($msg = $okbutton) Or ($msg = -3)

Func _fun1()
	ConsoleWrite('1' & @CRLF)
	GUICtrlSetData($Label, $InitTime)
	$Time = TimerInit()
EndFunc
 
Верх