Zähler bei Loop

  • Hallo,

    ich möchte mir gerne einen Zähler
    in einen Loop einbauen.
    Bei jedem Loop soll der Zähler von 0 in Millisekunden starten

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 440, 489, 197)

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

    $Zaehler = GUICtrlCreateLabel("0", 56, 132, 14, 28)

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

    $Start = GUICtrlCreateButton("Start", 504, 364, 75, 25)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    AdlibRegister('_ChangeZahl', 1000)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Start

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

    For $i=1 to 3 Step +1

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

    MsgBox(4,"Anzeige",$i)

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

    next
    MsgBox(4,"Fertig","Beendet")
    EndSwitch

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

    WEnd

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

    Func _ChangeZahl()

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

    ;$Zaehler + 1
    EndFunc

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

    Habe mit AdlibRegister probiert, komme aber irgendwie nicht weiter!

    Grüße
    Ilse ;)

  • Hallo Sprenger120,

    hm.. komme da nicht weiter.

    [autoit]


    $begin = TimerInit()
    For $i=1 to 10

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

    sleep(1000)
    $dif = TimerDiff($begin)
    MsgBox(0,"Zeitunterschied",$dif)
    next

    [/autoit]

    Ich wollte daß das Feld $Zaehler
    während des Loops in diesem Fomat läuft:

    00:01:22
    Min:Sek:Millisekunden
    muß ich das in eine Funktion schreiben die mit AdlibRegister
    abfrägt ? Oder ist das der falsche Weg?

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 440, 489, 197)

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

    $Zaehler = GUICtrlCreateLabel("0", 56, 132, 14, 28)

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

    $Start = GUICtrlCreateButton("Start", 504, 364, 75, 25)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    AdlibRegister('_ChangeZahl', 1000)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Start

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

    For $i=1 to 3 Step +1

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

    MsgBox(4,"Anzeige",$i)

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

    next
    MsgBox(4,"Fertig","Beendet")
    EndSwitch

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

    WEnd

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

    Func _ChangeZahl()

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

    ;$Zaehler + 1
    EndFunc

    [/autoit]

    Grüße
    Ilse ;)

  • Also du willst das es EXAKT nach einer MS +1 ist? Das wird, schwer, denn man muss es überprüfen und das kostet ja auch Zeit. Das man bis 1000 in weniger als 1 Sek schafft, ist möglich in einer einfachn (schon von dir eingebauten) For-Schleife.
    Wenn es dir nur darum geht es anzeigen zu lassen, und die 1 MS nur eine grobe Zeitangabe ist kannst du es so verwenden. Die Geschwindigkeit kommtaber auch immre auf den Computer an.


    (Hier mal ein BSP, was ich denke was du suchst. Ich weiß nicht ob es richtig ist. Die MSgbox hab ich mal weg gelassen statdessen ins Label reingeschrieben.)

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 440, 489, 197)

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

    $Zaehler = GUICtrlCreateLabel("0", 56, 132, 100, 100)

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

    $Start = GUICtrlCreateButton("Start", 504, 364, 75, 25)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    AdlibRegister('_ChangeZahl', 1000)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Start

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

    For $i=1 to 1000 Step +1

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

    GUICtrlSetData ($Zaehler, $i)

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

    next

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

    EndSwitch
    ;~ GUICtrlSetData ($Zaehler, "0");wenn es wieder 0 sein soll

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

    WEnd

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

    Func _ChangeZahl()

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

    ;$Zaehler + 1
    EndFunc

    [/autoit]

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Hallo
    und merci für eure Hilfe.

    Ich habe da etwas interessantes gefunden.

    [autoit]


    #include <WindowsConstants.au3>
    #include <Date.au3>

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

    Dim $Start = False, $Timer = 0, $tmpTimer = 0, $LastTimer = 0
    Dim $iHours = 0, $iMins = 0, $iSecs = 0, $iHsecs = 0

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

    Opt("GUIOnEventMode",1) ;Enable Interrupts for GUI
    $GUI = GUICreate("Stoppuhr", 325, 126, 214, 139, 0x00080000, 0x00000008) ;Create GUI with Topmost ID
    $Stoppuhr = GUICtrlCreateLabel("Stoppuhr", 8, 8, 135, 41)
    GUICtrlSetFont(-1, 26, 400, 0, "Arial")
    $Zeit = GUICtrlCreateLabel("00:00:00.00", 8, 56, 178, 41)
    GUICtrlSetFont(-1, 26, 400, 0, "Arial")
    GUICtrlSetColor(-1, 0xFF0000)
    $StartStopp = GUICtrlCreateButton("Start", 225, 8, 89, 41, $WS_GROUP)
    GUICtrlSetFont(-1, 16, 400, 0, "Arial")
    $Reset = GUICtrlCreateButton("Reset", 225, 56, 89, 41, $WS_GROUP)
    GUICtrlSetFont(-1, 16, 400, 0, "Arial")

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

    GUICtrlSetOnEvent($StartStopp, "StartStopp") ;Create events for Buttons
    GUICtrlSetOnEvent($Reset, "Reset")
    GUISetOnEvent(-3, "End") ;Create Event for {ESC} and Close
    GUISetState(@SW_SHOW) ;Show GUI

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

    While Sleep(50) ;Main Loop
    If $Start Then ;Only if start is pressed....
    $tmpTimer = (TimerDiff($Timer)) + $LastTimer
    Convert() ;Convert ticks to time and splitt it into HH:MM:SS.hh
    GUICtrlSetData($Zeit, $iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs) ;Update GUI
    EndIf
    WEnd

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

    Func StartStopp() ;Interrupt for start/stop buttons
    If $Start Then ;Stop button pressed
    GUICtrlSetData($StartStopp, "Start") ;Change button text
    $tmpTimer = (TimerDiff($Timer)) + $LastTimer
    $LastTimer = $tmpTimer
    $Start = False
    Convert() ;Convert ticks to time and splitt it into HH:MM:SS.hh
    GUICtrlSetData($Zeit, $iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs) ;Update GUI
    Else
    GUICtrlSetData($StartStopp, "Stopp") ;Start button pressed
    $Start = True
    $Timer = TimerInit()
    EndIf
    EndFunc ;==>StartStopp

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

    Func Reset() ;Resets GUI
    GUICtrlSetData($Zeit, "00:00:00.00")
    $LastTimer = 0
    $Timer = TimerInit()
    EndFunc ;==>Reset

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

    Func Convert() ;Convert ticks to time and splitt it into HH:MM:SS.hh
    _TicksToTime($tmpTimer, $iHours, $iMins, $iSecs)
    $iHsecs = Round(($tmpTimer - (($iHours * 3600000) + ($iMins * 60000) + ($iSecs * 1000))) / 10)
    If $iHours < 10 Then $iHours = "0" & $iHours
    If $iMins < 10 Then $iMins = "0" & $iMins
    If $iSecs < 10 Then $iSecs = "0" & $iSecs
    If $iHsecs < 10 Then $iHsecs = "0" & $iHsecs
    EndFunc ;==>Convert

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

    Func End() ;Exit
    Exit
    EndFunc ;==>End

    [/autoit]

    Meine Frage:

    Wäre es möglich das irgendwie
    per Funktion in den Loop einzubauen.
    Ich meine daß das Label während
    des Loops als Zeitanzeige läuft?

    Meine Versuche brachten leider nichts!

    Hier nochmal mein Gerüst!

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <IE.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 440, 489, 197)

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

    $Zaehler = GUICtrlCreateLabel("0", 56, 132, 14, 28)

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

    $Start = GUICtrlCreateButton("Start", 504, 364, 75, 25)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    AdlibRegister('_ChangeZahl', 1000)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Start

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

    For $i=1 to 3 Step +1

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

    MsgBox(4,"Anzeige",$i)

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

    next
    MsgBox(4,"Fertig","Beendet")
    EndSwitch

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

    WEnd

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

    Func _ChangeZahl()

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

    ;$Zaehler + 1
    EndFunc

    [/autoit]


    Grüße
    Ilse ;)

  • Für die Zeit gibts doch Markos. Wenn du eine Art Stopuhr meinst wie in dem oberen Schritt, dann kopier einfach diie Func aus dem oberen ins das untere.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake