Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Иск,
Во-первых это очень и очень не практично в цикле вот так записывать интенсивно в ини-файл, если очеь нужно, то делать это хотябы раз в несколько (десятков) секунд.

По поводу прерывания цикла. Это можно сделать простой проверкой переменной, присваивать ей значение при запуске фуннкции:

Код: Выделить весь код
#include <GUIConstants.au3>
#include <Misc.au3>
#include <Fade.au3>

Global $iLoopIsPaused = False

Opt("GUIOnEventMode", 1)
GUICreate("Test", 250, 200, 1024, 0)
GUISetBkColor(0xFFFFFF)
GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
GUISetState(@SW_SHOW)

$tab = GUICtrlCreateTab(10, 10, 230, 180)

$tab2 = GUICtrlCreateTabItem("3")
GUICtrlCreateLabel("3", 30, 53, 130, 20)
$tab2combo = GUICtrlCreateCombo("", 170, 50, 60, 40)
GUICtrlSetData(-1, "40|30|20", "30") ; default 80%

$tab1 = GUICtrlCreateTabItem("2")
GUICtrlCreateLabel("2", 30, 53, 130, 20)
$tab1combo = GUICtrlCreateCombo("", 170, 50, 60, 40)
GUICtrlSetData(-1, "70|80|90", "90") ; default 80%
$MHP = GUICtrlRead($tab1combo)

$tab0 = GUICtrlCreateTabItem("1")
GUICtrlSetState(-1, $GUI_SHOW) ; will be display first
GUICtrlCreateLabel("X", 30, 53, 50, 20)
GUICtrlCreateLabel("Y", 30, 103, 50, 20)
$tab0Start = GUICtrlCreateButton("Save and Start", 10, 150, 115, 20)
GUICtrlSetOnEvent(-1, "OKPressed")
$tab0Exit = GUICtrlCreateButton("Exit", 125, 150, 115, 20)
GUICtrlSetOnEvent(-1, "CancelPressed")
$tab01input = GUICtrlCreateInput("X", 80, 50, 90, 20)
$tab02input = GUICtrlCreateInput("Y", 80, 100, 90, 20)

GUICtrlCreateTabItem("") ; end tabitem definition
GUISetState()
$Acc = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "X", "")
GUICtrlSetData($tab01input, $Acc)
$Pass = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "Y", "")
GUICtrlSetData($tab02input, $Pass)

While 1
    Sleep(5000) ;Ждём 5 секунд
    If Not $iLoopIsPaused Then Write()
WEnd

Func Write()
    IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "X", GUICtrlRead($tab01input))
    IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "Y", GUICtrlRead($tab02input))

    $MHP = GUICtrlRead($tab1combo)

    Switch $MHP
        Case "70"
            IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "70")
        Case "80"
            IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "80")
        Case "90"
            IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "90")
    EndSwitch

    $MHPex = GUICtrlRead($tab2combo)

    Switch $MHPex
        Case "20"
            IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "20")
        Case "30"
            IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "30")
        Case "40"
            IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "40")
    EndSwitch
EndFunc   ;==>Write

Func OKPressed()
    $iLoopIsPaused = True ;Это "сообщит" циклу что функцию Write() не нужно запускать

    ;Тут мы выполняем что нам нужно

    $iLoopIsPaused = False ;Тут мы как бы снова даём циклу "понять" что функцию Write() нужно запускать
EndFunc   ;==>OKPressed

Func CancelPressed()
    Exit
EndFunc   ;==>CancelPressed

Func SpecialEvents()
    Switch @GUI_CtrlId
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_MINIMIZE

        Case $GUI_EVENT_RESTORE

    EndSwitch
EndFunc   ;==>SpecialEvents

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:26, 05-09-2008 | #841