Uhrzeit abgleich

  • Greetings! :)
    Komme bei einen Problem nicht weiter und mir gehen die Ideen aus :(
    Habe eine GUI in der ich die gewünschte Startzeit für das zu startente Prog eingeben kann.
    Funktioniert auch alles, aber beim Idiotensicher machen komme ich bei der überprüfung der Uhrzeit nicht weiter.
    Mein Problem ist eben das Zeitformat, es soll zB ein Hinweis kommen wenn die eingegebene Startzeit 23Uhr ist, es jetzt aber schon 2Uhr ist. In diesem Fall wäre 2Uhr größer als 23Uhr obwohl der Wert von 2Uhr (2) kleiner ist als 23 Uhr (23).
    Hier mal der(lauffähige) GUI Teil meines Scriptes:
    (Problem beginnt ab ca Zeile 61)

    Spoiler anzeigen
    [autoit]

    #include
    #include
    #Include

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

    Opt("TrayAutoPause",0) ;0=no pause, 1=Pause
    Opt("TrayIconDebug",1) ;0=no info, 1=debug line info
    Opt("TrayOnEventMode",1) ;0=disable, 1=enable

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

    $DowKeys = GUICreate("Startzeit", 260, 160)

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

    GUICtrlCreateLabel("Stunde : Minute" , 20, 20, 180, 30)
    GUICtrlSetFont (-1, 12,400)

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

    $S = 23
    $M = 55
    $j = 0

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

    $Input1 = GUICtrlCreateInput($S, 20, 45, 40, 30)
    GUICtrlSetFont (-1, 15,400)

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

    GUICtrlCreateLabel(":", 70, 40, 20, 40)
    GUICtrlSetFont (-1, 25,400)

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

    $Input2 = GUICtrlCreateInput($M, 90, 45, 40, 30)
    GUICtrlSetFont (-1, 15,400)

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

    $Button7 = GUICtrlCreateButton("Jetzt Zeit", 150, 44, 90, 30, 0)
    GUICtrlSetFont (-1, 15,400,"","Comic Sans MS")

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

    $Button8 = GUICtrlCreateButton("Starten!", 20, 90, 220, 50, 0)
    GUICtrlSetFont (-1, 25,400,"","Comic Sans MS")

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

    $Button9 = GUICtrlCreateButton("Log Datei", 180, 10, 60, 20, 0)
    GUICtrlSetFont (-1, 8,400,"","Comic Sans MS")

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

    GUISetState(@SW_SHOW,$DowKeys)

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

    $loger = (@ScriptDir&"\LogBuch.ini")

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $Button9
    ShellExecute ($loger)
    Case $msg = $Button7
    $S = @HOUR
    $M = @MIN
    $j = 1
    GUICtrlSetData ( $Input1, $S )
    GUICtrlSetData ( $Input2, $M )
    Case $msg = $Button8
    GUISetState(@SW_HIDE)
    $S = GUICtrlRead ( $Input1 )
    $M = GUICtrlRead ( $Input2 )
    $S2 = @HOUR +24
    If $S > 23 OR $M > 59 Then
    MsgBox(16, "Fehler", "Falsche Zeitwert!")
    GUISetState(@SW_SHOW,$DowKeys)
    ElseIf $S < $S2 Then
    If $S = $S2 Then
    If $M > @MIN Then
    ExitLoop
    EndIf
    EndIf
    If MsgBox(292, "Achtung!", "Komischer Zeitwert!" & @CRLF &"Soll "&$S&":"&$M&" Uhr übernommen werden?"& @CRLF & _
    "Jetzt ist es "&@HOUR&":"&@MIN&" Uhr!" ) = 7 Then
    GUISetState(@SW_SHOW,$DowKeys)
    Else
    ExitLoop
    EndIf

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

    Else
    ExitLoop
    EndIf

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

    Case $msg = $GUI_EVENT_CLOSE
    Exit

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

    EndSelect
    WEnd

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

    ;MsgBox(0,$j &" Startzeit = ",$S &" : "& $M ,3 )
    $TI1 = TrayCreateItem("NextRun = " &$S &":"&$M&" Uhr")

    [/autoit]

    Das ist der Stand wo ich nicht weiterkomme, scheinbar habe ich mich in eine Sackgasse verrant und die Lösung ist auf anderem Weg einfacher zu erreichen ;(
    (Auf Wunsch kann ich noch Kommentare einfügen, um meine Gedanken und Schritte verständlicher zu machen)

  • Danke, aber es hilft mir leider nicht weiter. :(
    Meine EIngabe hat ja nur die Uhrzeit, und keine Information darüber an welchen Tag das Ereignis stattfinden soll.
    Wenn müßte ich irgend eine Art Logik oder Plausibilitäts Test einbauen, aber das überfordert meine Kenntnis und ist in dem Fall auch nicht dem AUfwand wert :(
    Dann werde ich diesen Sicherheitscheck rausnehmen.
    Wenn doch noch jemand eine Lösung hat, würde ich mich trotzdem freuen :)

  • Wenn Du kein Datum hast, kann du ja auch nicht sagen, ob 2 Uhr nach 23 Uhr gestern oder vor 23 Uhr heute ist !

    Wenn Du dagegen das Datum in der gewünschten Startzeit mitführst (ggf. nach dem Start, auf den nächsten Tag setzen), dann kannst du auch mit _DateDiff() arbeiten.
    Und ohne Datum ... denk ... denk ... fällt mir gerade keine Lösung ein.

    Gruß
    micha_he

    Edit: Aber wenn Du nur eine Zeit eingibst, nimmst Du einfach den heutigen Tag. Dann _DateDiff() mit jetzt, wenn negativ liegt der Startzeitpunkt schon in der Vergangenheit ( z.B. Termin 23:00 um 23:25 eingegeben), dann wird mit _DateAdd() einfach 1 Tag hinzuaddiert. Somit hast Du einen Termin den Du dann immer mit _DateDiff() prüfen kannst, bis er erreicht wurde oder wieder in der Vergangenheit liegt, dann startest Du deine Funktion. Wenn sich der Termin wiederholen soll, addierst Du dann wieder einen Tag.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (3. April 2009 um 20:06)