Sleep-Zeit und Fehler in Schleife

  • Guten Abend zusammen,
    zu meinem Problem (ist wohl schon etwas spät).
    1.) Beendet er die schleife nach dem Erfüllen der IF-Schleife nicht
    2.) Passen die Sleep-Zeiten bei der IF-Schleife (wenn true) nicht. Sollten Random zwischen 2 und 4 Sekunden liegen

    [autoit]

    $time = 100
    WinWaitActive("")

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

    Sleep (2000)

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

    Func go()

    Sleep(500)
    Send("{F3 down}")
    Sleep (600)
    Send("{F3 up}")

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

    Sleep(700)
    Send("{F4 down}")
    Sleep (600)
    Send("{F4 up}")

    $i = 1
    While $i <= $time

    $col = PixelGetColor (510,30) ; Farbe Prüfen

    if $col = 16381432 Then

    Sleep(Random(2000, 4000, 1)) ; 2-4 Sekunden warten
    Send("{F4 down}")
    Sleep (600)
    Send("{F4 up}")
    $i = 1000

    Else

    Sleep(250)
    $i = $i + 1

    EndIf
    WEnd

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

    Send("{F4 down}")
    Sleep (600)
    Send("{F4 up}")
    Sleep(10000)
    EndFunc

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

    $lim = 999999
    For $i = 1 To $lim Step 1
    go()
    Next

    [/autoit]
  • Mit F3/F4 wird ein Programm gestartet
    Er soll an einer gewissen Stelle checken ob sich ein Popup öffnet.
    Wenn sich das in einem gewissen Zeitraum macht, soll er F4 nach x-Sekunden drücken, die Schleife unterbrechen und von Vorne anfangen (F3-F4-warten-usw...).
    Wenn nach dem besagten Zeitraum das Popup nicht erscheint, soll er mit F4 das Programm beenden, und nach 10 Sekunden wieder mit F4 beginnen.

    [Blockierte Grafik: http://www.cghost.de/mediahost/img3/Untitled-2Wosu.jpg]

  • Zitat

    Original von janrenzlow
    Probier es doch mal mit Do ... und Until $i <= $cvolor statt While WEnd

    Da Checkt er das mit der Farbe irgendwie überhaupt nicht :(

    • Offizieller Beitrag
    Zitat

    Original von inscape

    Da Checkt er das mit der Farbe irgendwie überhaupt nicht :(

    Das hat aber definitiv nichts mit der Wahl der Schleife zu tun.
    Debugge doch mal dein Programm.
    Laß dir jede Variable, die sich ändern kann/soll in die Konsole ausgeben. Dann siehst du am ehesten, wo es hakt.

  • Zitat

    Laß dir jede Variable, die sich ändern kann/soll in die Konsole ausgeben. Dann siehst du am ehesten, wo es hakt.

    Wie mach ich das am besten?

  • Hi,

    Ich glaube da haperts schon an der Funktionsweise. Schau Dir mal Folgendes an:

    Spoiler anzeigen
    [autoit]

    main()

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

    Func main()
    Local Const $I_TIMEOUT = 10000 ;~ Time in milliseconds...
    WinWaitActive("")
    Sleep(2000)

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

    While 1
    Sleep(500)
    Send("{F3 down}")
    Sleep(600)
    Send("{F3 up}")

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

    Sleep(700)
    Send("{F4 down}")
    Sleep(600)
    Send("{F4 up}")

    $n_timer = TimerInit() ;~ Start Timer
    While TimerDiff($n_timer) < $I_TIMEOUT ;~ Check for Timeout
    If PixelGetColor(510, 30) = 16381432 Then
    Sleep(Random(2000, 4000, 1))
    Send("{F4 down}")
    Sleep(600)
    Send("{F4 up}")
    ExitLoop
    EndIf

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

    Sleep(250)
    WEnd

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

    Send("{F4 down}")
    Sleep(600)
    Send("{F4 up}")
    Sleep(10000)
    WEnd
    EndFunc ;==>main

    [/autoit]

    Achja, Debuggen auf die Konsole kannst Du mit

    [autoit]

    ConsoleWrite()

    [/autoit]

    (nur in Verbindung mit SciTE!)...