# [AutoIt] Skript, das nach 1 Stunde Daten löschen soll



## YannikTold (15. Juli 2010)

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:

```
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


----------



## zer0 (15. Juli 2010)

Hallo YannikTold!

Was meinst du mit du findest diesen Punkt nicht?


----------



## YannikTold (15. Juli 2010)

zer0 hat gesagt.:


> 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


----------



## zer0 (15. Juli 2010)

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?


----------



## Go-Autoit (11. November 2010)

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


----------

