tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1211
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    Hallo Forumgemeinde,
    ich arbeite gerade an einem Skript, welches mit einem Fortschrittsbalken die vergangene Zeit anzeigt und eigentlich nach einer Stunde
    Daten löschen soll und anschließend weiterarbeiten soll, wenn mehr als eine Datei in einem bestimmten Ordner sind löschen soll.
    Sobald eine Datei nur noch in diesem Verzeichnis ist, soll wieder der Fortschrittsbalken und der Timer 1 h laufen usw.

    EDIT: Der Vorgang soll mithilfe des Button Start... begonnen werden und mithilfe des Buttons Change(den ich auf Beenden umtaufe) beendet werden!

    Leider kann ich den Timer nicht einstellen, da ich diesen Punkt nicht finde. Hier mal der Code von dem Fenster und dem Timer:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    
    Global $iMemo, $hStatusBar, $progress, $percent = 0, $direction = 1
     
    _Example_CallBack()
     
    Func _Example_CallBack()
        Local $hGUI, $iTimerProgress, $btn_change, $iWait = 10, $btn_state
        Local $aParts[3] = [75, 330, -1]
    $hGUI = GUICreate("Anno 1404 Spielstand Reseter - World-from-you", 400, 320)
        $iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, BitOR($WS_HSCROLL, $WS_VSCROLL))
        GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
        $hGUI = GUICreate("Timers Using CallBack Function(s)", 400, 320)
        $iMemo = GUICtrlCreateEdit("", 2, 32, 396, 226, BitOR($WS_HSCROLL, $WS_VSCROLL))
        GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
        $btn_state = GUICtrlCreateButton("Start Anno 1404 Spielstand Reseter", 125, 270, 125, 25)
        $btn_change = GUICtrlCreateButton("Change", 215, 270, 90, 25)
        GUICtrlSetState($btn_change, $GUI_DISABLE)
        $hStatusBar = _GUICtrlStatusBar_Create($hGUI, $aParts)
        _GUICtrlStatusBar_SetText($hStatusBar, "Timers")
        _GUICtrlStatusBar_SetText($hStatusBar, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
        $progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
        GUICtrlSetColor($progress, 0xff0000)
        _GUICtrlStatusBar_EmbedControl($hStatusBar, 1, GUICtrlGetHandle($progress))
        GUISetState()
     
        _Timer_SetTimer($hGUI, 1000, "_UpdateStatusBarClock") ; create timer
     
        While 1
            Switch GUIGetMsg()
                Case $GUI_EVENT_CLOSE
                    ExitLoop
                Case $btn_state
                    If GUICtrlRead($btn_state) = "Start Anno 1404 Spielstand Reseter" Then
                        $iTimerProgress = _Timer_SetTimer($hGUI, $iWait, "_UpdateProgressBar") ; create timer
                        If @error Or $iTimerProgress = 0 Then ContinueLoop
                        GUICtrlSetData($btn_state, "Stop")
                        GUICtrlSetState($btn_change, $GUI_ENABLE)
                    Else
                        GUICtrlSetState($btn_change, $GUI_DISABLE)
                        _Timer_KillTimer($hGUI, $iTimerProgress)
                        GUICtrlSetData($btn_state, "Start Anno 1404 Spielstand Reseter")
                    EndIf
     
                Case $btn_change
                    If $iWait = 10 Then
                        $iWait = 250
                    Else
                        $iWait = 10
                    EndIf
                    MemoWrite("Timer for _UpdateProgressBar set at: " & $iWait & " milliseconds")
                    $iTimerProgress = _Timer_SetTimer($hGUI, $iWait, "", $iTimerProgress) ; reuse timer with different interval
            EndSwitch
        WEnd
        ConsoleWrite("Killed All Timers? " & _Timer_KillAllTimers($hGUI) & @CRLF)
        GUIDelete()
    EndFunc   ;==>_Example_CallBack
     
    ; call back function
    Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime)
        #forceref $hWnd, $Msg, $iIDTimer, $dwTime
        _GUICtrlStatusBar_SetText($hStatusBar, @TAB & @TAB & StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
    EndFunc   ;==>_UpdateStatusBarClock
     
    ; call back function
    Func _UpdateProgressBar($hWnd, $Msg, $iIDTimer, $dwTime)
        #forceref $hWnd, $Msg, $iIDTimer, $dwTime
        $percent += 5 * $direction
        GUICtrlSetData($progress, $percent)
        If $percent = 100 Or $percent = 0 Then $direction *= -1
        If $percent = 100 Then
            GUICtrlSetColor($progress, 0xff0000)
        ElseIf $percent = 0 Then
            GUICtrlSetColor($progress, 0x0000ff)
        EndIf
    EndFunc   ;==>_UpdateProgressBar

    Danke für eure Hilfe im Vorraus.

    Grüße

    YannikTold
    Geändert von YannikTold (15.07.10 um 18:14 Uhr)
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  2. #2
    Avatar von zer0
    zer0 zer0 ist offline Mitglied Brokat
    Registriert seit
    Oct 2009
    Beiträge
    323
    Hallo YannikTold!

    Was meinst du mit du findest diesen Punkt nicht?
     

  3. #3
    Avatar von YannikTold
    YannikTold YannikTold ist offline Mitglied Bronze
    Registriert seit
    Mar 2010
    Beiträge
    41
    Zitat Zitat von zer0 Beitrag anzeigen
    Hallo YannikTold!

    Was meinst du mit du findest diesen Punkt nicht?
    Ich will den Timer so umstellen, das er 60 Min läuft, dann werden alle Daten, bis auf die Neueste gelöscht.
    So soll das eigentlich aussehen, aber ich weiß nicht wo ich das in den Code reinprogrammier.

    Grüße

    YannikTold
     
    Bitte bewerte mich, falls ich weitergeholfen habe.
    Mit freundlichen Grüßen
    Yannik Told

  4. #4
    Avatar von zer0
    zer0 zer0 ist offline Mitglied Brokat
    Registriert seit
    Oct 2009
    Beiträge
    323
    Habe schon lange nichts mehr mti AutoIt gemacht, aber du könntest die Funktion Sleep() benutzen. Immer Sleep(1000); dann die Progressbar um 1 erhöhen und wieder sleepen. Nach einer Stunde, also wenn die Schleife 3600 gelaufen ist (wenn Sleep 1000 = 1 Sekunde ist) dann überprüfst du den Ordner und löschst alles etc was du halt willst. Hast du so etwas gemeint?
     

  5. #5
    Go-Autoit Go-Autoit ist offline Rookie
    Registriert seit
    Nov 2010
    Beiträge
    8
    Dieser Timer sollte dir weiter helfen.

    global $timer, $stop




    $stop = 0
    $timer = 3600000

    ;~ 3600 sekunden sind 1 Stunde
    ;~ 1 Autoit-Sekunde = 1000




    while 1

    if $stop >= $timer then
    MsgBox(0,"ALARM!","ALARM! 1 Std. ist rum!")
    exitloop
    EndIf

    $stop = $stop + 1000
    sleep(1000)
    wend
     
    Go-Autoit

    Mehr Tutorials!

Ähnliche Themen

  1. Daten einer bestimmten Stunde zählen
    Von sandroP im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 08.04.09, 22:09
  2. Daten nach X Zeit löschen...
    Von deintag85 im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 20.06.08, 18:49
  3. Antworten: 2
    Letzter Beitrag: 19.06.07, 15:21
  4. Antworten: 5
    Letzter Beitrag: 02.11.05, 12:15
  5. Antworten: 2
    Letzter Beitrag: 01.02.05, 17:20