Hallo Freunde der automatisierten Schritte,
hat ein Button-Click nicht Vorrang vor einer Schleife? Wie kann ich durch einen Button-Click den Inhalt einer Variablen so verändern, dass dieser von einer laufenden Schleife wahrgenommen wird?
Die Idee:
Ich starte mit Button 1 die Schleife. Solange $i = 0 ist, soll die Schleife laufen. Mit Button 2 will ich die Schleife stoppen, indem ich $i auf 1 setze. Damit müsste beim nächsten Schleifendurchlauf die Schleife stoppen, da $i = 1 ist (until $i = 1). Wie die Ausgabe in der Console zeigt, wird der Mausklick auf "Stop" und "Ende" gar nicht ausgewertet. Warum nicht?
Spoiler anzeigen
Quellcode
Quellcode bearbeiten
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ###
Local $Form2 = GUICreate("Schleife", 299, 56, 1184, 328)
Local $Weiter = GUICtrlCreateButton("&Weiter", 8, 8, 89, 41)
GUICtrlSetFont(-1, 11, 400, 0, "Verdana")
Local $Button_Stop = GUICtrlCreateButton("&Stop", 104, 8, 89, 41)
GUICtrlSetFont(-1, 11, 400, 0, "Verdana")
Local $Button_Ende = GUICtrlCreateButton("&Ende", 200, 8, 89, 41)
GUICtrlSetFont(-1, 11, 400, 0, "Verdana")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $i = 0 ; für die Schleife (??? wann setze ich in einem Script die Variable auf Local bzw. Global ???)
Local $pause = 1000 ; Dauer für die Pause
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Weiter
$i = 0 ; Schleife läuft, solange $i = 0 ist
Do
ConsoleWrite ($i & @TAB & @msec & @CRLF)
sleep ($pause) ; kurze Pause
Until $i = 1 ; Schleife so lange durchlaufen, bis $i = 1 ist
Case $Button_Stop
$i = 1 ; stopt die Schleife
Case $Button_Ende ; Ende
Exit
EndSwitch
WEnd
Viele Grüße
AutoMit