Aktualisierung von Variablen

  • Hi,
    ich hab ein Problem.
    Ich habe mir ein Script geschrieben, dass die Sekunden bzw. die Minuten bis zu einer gewissen Uhrzeit ausgibt.
    Wenn ich die Minuten bzw. Sekunden in einer MsgBox ausgeben lasse funktioniert es logischerweise, da das Script jedesmal neu ausgeführt wird.
    Jetzt möchte ich aber z.B. einfach die Sekunden in ein Label schreiben, dass sich immer wieder aktualiesieren soll, kann mir jemand sagen wie ich das machen kann?

    Mein bisheriges Script:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    Switch @MDay
    Case 21

    if @Sec <> 0 Then
    $Sec1 = ((23 - @hour) * 3600) + ((60 - @min)*60) + (60 - @sec) + 374400
    Else
    $Sec1 = ((24 - @hour) * 3600) + (60 - @sec) + 374400
    Endif

    if @Min <> 0 Then
    $Min1 = (((23 - @hour) * 60) + (60 - @min)) + 6240
    Else
    $Min1 = ((24 - @hour) * 60) + 6240
    Endif

    Case 22

    if @Sec <> 0 Then
    $Sec1 = ((23 - @hour) * 3600) + ((60 - @min)*60) + (60 - @sec) + 288000
    Else
    $Sec1 = ((24 - @hour) * 3600) + (60 - @sec) + 288000
    Endif

    if @Min <> 0 Then
    $Min1 = (((23 - @hour) * 60) + (60 - @min)) + 4800
    Else
    $Min1 = ((24 - @hour) * 60) + 4800
    Endif
    Case 23
    if @Sec <> 0 Then
    $Sec1 = ((23 - @hour) * 3600) + ((60 - @min)*60) + (60 - @sec) + 201600
    Else
    $Sec1 = ((24 - @hour) * 3600) + (60 - @sec) + 201600
    Endif

    if @Min <> 0 Then
    $Min1 = (((23 - @hour) * 60) + (60 - @min)) + 3360
    Else
    $Min1 = ((24 - @hour) * 60) + 3360
    Endif
    Case 24
    if @Sec <> 0 Then
    $Sec1 = ((23 - @hour) * 3600) + ((60 - @min)*60) + (60 - @sec) + 115200
    Else
    $Sec1 = ((24 - @hour) * 3600) + (60 - @sec) + 115200
    Endif

    if @Min <> 0 Then
    $Min1 = (((23 - @hour) * 60) + (60 - @min)) + 1920
    Else
    $Min1 = ((24 - @hour) * 60) + 1920
    Endif
    Case 25
    if @Sec <> 0 Then
    $Sec1 = ((23 - @hour) * 3600) + ((60 - @min)*60) + (60 - @sec) + 28800
    Else
    $Sec1 = ((24 - @hour) * 3600) + (60 - @sec) + 28800
    Endif

    if @Min <> 0 Then
    $Min1 = (((23 - @hour) * 60) + (60 - @min)) + 480
    Else
    $Min1 = ((24 - @hour) * 60) + 480
    Endif
    Case 26
    if @Sec <> 0 Then
    $Sec1 = ((7 - @hour) * 3600) + ((60 - @min)*60) + (60 - @sec)
    Else
    $Sec1 = ((8 - @hour) * 3600) + (60 - @sec)
    Endif

    if @Min <> 0 Then
    $Min1 = (((7 - @hour) * 60) + (60 - @min))
    Else
    $Min1 = ((8 - @hour) * 60)
    Endif
    EndSwitch

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

    If $Min1 < 0 then
    MsgBox(0, "", "Du Depp hast Verpennt")
    Else
    MsgBox(0, "", 'Es sind noch: ' & $Min1 & ' min bzw. noch ' & $Sec1 & ' sec!')
    Endif

    [/autoit]

    Ach nochwas, wäre das auch einfacher gegangen, die Zeit bis zu einem gewissen Zeitpunkt auszurechenen, hätte mich nur mal so interessiert?

    Ich danke schonmal für eure Antworten.

    //Edit: Hat sich erledigt, ich hab mich die ganze Zeit vertahn, jetzt funzt perfekt, thx.

    3 Mal editiert, zuletzt von anno2008 (22. Mai 2008 um 16:18)

  • probier mal das,


    musst halt noch verfeinern...

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiDateTimePicker.au3>
    #include <Date.au3>
    Opt("GUIOnEventMode", 1)
    GUICreate("Counter",500,300)
    GUISetOnEvent($GUI_EVENT_CLOSE,"_exit")
    GUICtrlCreateLabel("Bitte Enddatum eingeben",10,10,200,20)
    $fd = GUICtrlGetHandle(GUICtrlCreateDate("2008/01/01",10,30,-1,-1))
    $fh = GUICtrlGetHandle(GUICtrlCreateDate("",250,30,-1,-1,$DTS_TIMEFORMAT))
    $label = GUICtrlCreateLabel("",10,90,480,20)
    $current = GUICtrlCreateLabel("",10,120,480,20)
    GUISetState()

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

    While 1
    $date = _GUICtrlDTP_GetSystemTime($fd)
    $time = _GUICtrlDTP_GetSystemTime($fh)
    $xy = $date[0]
    $xm = $date[1]
    $xd = $date[2]
    $xh = $time[3]
    $xmi = $time[4]
    $xs = $time[5]
    $Datey = _DateDiff( "y",_NowCalc(),$xy & "/" & $xm & "/" & $xd & " " & $xh & ":" & $xmi & ":" & $xs)
    $Datem = _DateDiff( "m",_NowCalc(),$xy & "/" & $xm & "/" & $xd & " " & $xh & ":" & $xmi & ":" & $xs)
    $Dated = _DateDiff( "d",_NowCalc(),$xy & "/" & $xm & "/" & $xd & " " & $xh & ":" & $xmi & ":" & $xs)
    $Dateh = _DateDiff( "h",_NowCalc(),$xy & "/" & $xm & "/" & $xd & " " & $xh & ":" & $xmi & ":" & $xs)
    $Datemi = _DateDiff( "n",_NowCalc(),$xy & "/" & $xm & "/" & $xd & " " & $xh & ":" & $xmi & ":" & $xs)
    $Dates = _DateDiff( "s",_NowCalc(),$xy & "/" & $xm & "/" & $xd & " " & $xh & ":" & $xmi & ":" & $xs)
    $err = @error
    GUICtrlSetData($label,"Noch " & $datey & " Jahre, " & $Datem & " Monate, " & $Dated & " Tage, " & $Dateh & " Stunden " & $Datemi & " Minuten, " & $Dates & " Sekunden")
    GUICtrlSetData($current,_Now())
    If $Dates = 0 Then
    MsgBox(0,"","Jetzt!")
    Exit
    EndIf
    Sleep(100)
    WEnd

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

    Func _exit ()
    Exit
    EndFunc

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

    Gruß rabbit

    Einmal editiert, zuletzt von rabbit (22. Mai 2008 um 14:17)

  • Hi,
    GtaSpider , ich kenne die Countdownfunction, aber was nutzt mir die? Ich will ja sozusagen "berechnen", wie lange es noch ist, bis zu einem gewissen Zeitpunkt.

    @rabbit, thx, gutes Script.

    Kann mir jetzt vielleicht noch jeamnd sagen, wie ich mit der von rabbit geannnten Funktion einen festen Zeitpunkt setzten kann, ohne dieses GUICtrlCreateDate?
    $fd gibt bei jedem ausführen einen anderen Wert zurück, ich hab grad kein Plan, was ich da machen soll.

    Danke, an alle die geholfen habn, bzw. noch helfen werden :) .