vernünftig aus schleife aussteigen

  • hallo, ich habe ein frage, wie kann ich vernünftig aus einer schleife aussteigen, so das mein programm wieder in den zustand springt als ob es gerade gestartet wurde.

    hier mal als beispiel

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate("Form1", 136, 123, 193, 125)
    $start = GUICtrlCreateButton("start", 10, 54, 53, 25, 0)
    $Input1 = GUICtrlCreateInput("", 46, 28, 37, 21)
    $stop = GUICtrlCreateButton("stop", 68, 54, 53, 25, 0)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $start
    schleife()
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit]

    func schleife()
    adlibenable("stop")
    $zahl = GUICtrlRead($Input1)
    $i = 0
    for $i = 1 to $zahl
    sleep(50)
    next
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func stop()
    $msg = GUIGetMsg()
    if $msg = $stop then
    MsgBox(0,"beenden", "programm wird beendet weil ich noch keine ordentliche lösung hierfür gefunden habe...!")
    exit
    endif
    EndFunc

    [/autoit]


    leider wird ja dadurch das programm beendet, ich möchte aber jedoch einfach wieder auf das start gui kommen.

    ich hoffe mir kann da jemand helfen ;)

  • ok das wäre geklärt, und wie müsste ich es hier regeln ?

    [autoit]


    $pause = GUICtrlRead($timer)
    $pause1 = ""
    MsgBox(0,"debug", $pause & " minuten pause!")
    if $pause <> $pause1 Then
    AdlibEnable("austritt", 150)
    sleep($pause*1000*60)
    start()
    Else
    EndIf

    [/autoit][autoit][/autoit][autoit]

    func austritt()
    $msg = GUIGetMsg()
    if $msg = $Button2 then
    MsgBox(0,"beenden", "programm wird beendet weil ich noch keine ordentliche lösung hierfür gefunden habe...!")
    exit
    endif
    EndFunc

    [/autoit]
  • Spoiler anzeigen
    [autoit]


    Startanfang()

    [/autoit] [autoit][/autoit] [autoit]

    Func Startanfang()
    $pause = GUICtrlRead($timer)
    $pause1 = ""
    MsgBox(0,"debug", $pause & " minuten pause!")
    if $pause <> $pause1 Then
    AdlibEnable("austritt", 150)
    sleep($pause*1000*60)
    start()
    Else
    EndIf
    endfunc
    func austritt();immer wenn du zum scriptanfang willst startest du das script einfach von vorne. Und zwar indem du alle schleifen beendest und dass ganze script in eine Funktion zusammenfasst.(Außer die anderen Funktionen,da sonst ein fehler kommt.
    Startanfang()
    EndFunc

    [/autoit]


    so ungefähr.

  • mh ne sry hab mich da vielleicht dumm ausgedrückt, ich möchte nicht in eine neue funktion rein, sondern einfach nur wieder in den zustand als ob ich ein script mit gui grad gestartet habe.

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    $Form1 = GUICreate("Form1", 136, 123, 193, 125)
    $start = GUICtrlCreateButton("start", 10, 54, 53, 25, 0)
    $Input1 = GUICtrlCreateInput("", 46, 28, 37, 21)
    $stop = GUICtrlCreateButton("stop", 68, 54, 53, 25, 0)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $start
    schleife()
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit]

    func schleife()
    $pause = GUICtrlRead($timer)
    $pause1 = ""
    MsgBox(0,"debug", $pause & " minuten pause!")
    if $pause <> $pause1 Then
    AdlibEnable("stop", 150)
    sleep($pause*1000*60)
    start()
    Else
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func stop()
    $msg = GUIGetMsg()
    if $msg = $stop then
    MsgBox(0,"beenden", "programm wird beendet weil ich noch keine ordentliche lösung hierfür gefunden habe...!")
    exit
    endif
    EndFunc

    [/autoit]
  • Wenn du deine ganzes Skript in ne funktion reinschreibst,hier Anfang(), dann kannst du diesen Anfang jedesmal starten,wenn du lust hast.Probiers mal mit msgboxen aus, wirst sehen es geht.
    Dein Skript ist nicht lauffähig, müsste aber theoretisch gehen,wenn du deine Fehler ausbesserst und die von mir gemachten änderungen übernimmst.

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Anfang()

    [/autoit][autoit][/autoit][autoit]

    Func Anfang()
    $Form1 = GUICreate("Form1", 136, 123, 193, 125)
    $start = GUICtrlCreateButton("start", 10, 54, 53, 25, 0)
    $Input1 = GUICtrlCreateInput("", 46, 28, 37, 21)
    $stop = GUICtrlCreateButton("stop", 68, 54, 53, 25, 0)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $start
    schleife()
    EndSwitch
    WEnd
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func schleife()

    [/autoit][autoit][/autoit][autoit]

    $pause = GUICtrlRead($timer)
    $pause1 = ""
    MsgBox(0,"debug", $pause & " minuten pause!")
    if $pause <> $pause1 Then
    AdlibEnable("stop", 150)
    sleep($pause*1000*60)
    start()
    Else
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func stop()
    $msg = GUIGetMsg()
    if $msg = $stop then
    MsgBox(0,"beenden", "programm wird beendet weil ich noch keine ordentliche lösung hierfür gefunden habe...!")
    ExitLoop
    Anfang()
    endif
    EndFunc

    [/autoit]
  • jop danke, so ähnlich habe ich es mir auch grad zusammengebastelt, funktioniert recht ordentlich.

    das script oben ist nur zur veranschaulichung, schon klar das das so nicht funktioniert ;)