Arbeitszeit-Rechner

  • Moin Moin,


    bei mri auf der arbeit muss ich jeden Tag 7h44min arbeiten.

    Da ich gleitzeit habe und immer zu unterschiedlichen Zeiten komme, würde ich mir gerne eine art Arbeitsrechner schreiben.

    Die Funktion soll sein:

    Man gibt in ein feld eine beliebige Uhrzeit ein und bestätigt das mit OK. Mit dem drücken auf OK soll ein fenster kommen wo der Feierabend drinne steht. Also die eingegebene Uhrzeit + 7 Stunden und 44 Minuten.

    Wie bekomme ich dass hin?


    Vielen dank!

    3 Mal editiert, zuletzt von davebxt (28. August 2012 um 16:41)

  • Man gibt in ein feld eine beliebige Uhrzeit ein und bestätigt das mit OK. Mit dem drücken auf OK soll ein fenster kommen wo der Feierabend drinne steht. Also die eingegebene Uhrzeit + 7 Stunden und 44 Minuten.


    Zum Beispiel so:

    [autoit]

    $HOUR = @HOUR + 7 ; Stunde auslesen und 7 addieren (oder statt @HOUR der Inhalt des Inputs)
    $MIN = @MIN + 44 ; Minute auslesen und 44 addieren (oder statt @MIN der Inhalt des Inputs)
    If ($MIN >= 60) Then ; gegebenenfalls Minuten korrigieren
    $HOUR += 1
    $MIN -= 60
    EndIf

    [/autoit]

    MfG, James

  • Irgendwie verstehe ich das nicht ganz.
    Das Programm soll input 2 minus input 1 und das ganze indem ich auf "Feierabend" klicke als Uhrzeit in einer Massagebox auswerfen?

    [Blockierte Grafik: http://desmond.imageshack.us/Himg221/scaled.php?server=221&filename=azeit.jpg&res=landing]


    [autoit]


    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Gleitzeitrechner", 210, 250, 229, 124)
    ;Zeit Eingabe____________________________________________
    $Input1 = GUICtrlCreateInput("08:00", 16, 40, 177, 21)
    $Input2 = GUICtrlCreateInput("03:45", 16, 96, 177, 21)
    ;label____________________________________________________
    $Label1 = GUICtrlCreateLabel("Überstunden", 16, 72, 65, 17)
    $Label2 = GUICtrlCreateLabel("Arbeitsbeginn", 16, 16, 68, 17)
    ;Buttons___________________________________________________
    $Feierabend = GUICtrlCreateButton("Feierabend", 16, 136, 177, 65)
    $Beenden = GUICtrlCreateButton("Beenden", 16, 216, 177, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Beenden
    Exit
    Case $Feierabend
    $zahl1 = GuiCtrlRead ($Input1)
    $zahl2 = GUICtrlRead ($Input2)

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

    If $zahl2 = ("-") Then $zahl1 - $zahl2 MsgBox(0), "Gleitzeit", $Feierabend)

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

    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Irgendwie verstehe ich das nicht ganz.
    Das Programm soll input 2 minus input 1 und das ganze indem ich auf "Feierabend" klicke als Uhrzeit in einer Massagebox auswerfen?


    Irgendwie verstehe ich diese Erklärung nicht.^^ Wieso auf einmal Input2 - Input1? Und die Control-ID des Feierabend-Buttons auszugeben macht irgendwie auch keinen Sinn, oder?


  • Irgendwie verstehe ich diese Erklärung nicht.^^ Wieso auf einmal Input2 - Input1? Und die Control-ID des Feierabend-Buttons auszugeben macht irgendwie auch keinen Sinn, oder?


    Entschuldige mich bitte, ich glaube ich habe mich nur undeutlich ausgedrückt :)
    Im wesentlichen soll es das machen:
    input1 = Arbeitsbeginn (Uhrzeit)
    input2 = Überstunden (Stunden)

    input2 minus input1 = tatsächlich zu arbeitende Zeit :)
    Button1 = Drücken damit es gerechnet wird und die MessageBox das Ergebnis in Form von einer Uhrzeit ausgibt.

    Im Detail:

    Mein Programm besteht aus 2 inputboxen und einem Button und soll die Uhrzeit auslesen können.
    Mein Ziel ist es: Dass in Input1 eine Uhrzeit eingegeben wird, beispielsweise 08:00 Uhr.

    In das Input2 soll eine beliebige Stundenangabe eingegeben werden.

    Input2 zieht nun die eingegebene Stundenanzahl von Input1 ab.
    Beim drücken des Buttons soll dann eine MassageBox erscheinen mit einem Text wie :"Du hast um 15:00 Feierabend"

    Es klingt sehr konfus, aber ich denke es ist auf jedenfall machbar :)
    irgendiwe mit InputCtrlRead oder dergleichen?

  • Irgendwie widersprichst du dir selber. Bei diesem Beispiel kannst du eingeben wann du gekommen bis und wie lange du Arbeiten musst. Dann sagt er dir wann du gehen musst. Ist es das was du willst?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $hGUI = GUICreate("Rechner", 200, 350)
    $idInputBeginn = GUICtrlCreateInput("", 50, 50, 100, 50)
    $idInputStunden = GUICtrlCreateInput("", 50, 150, 100, 50)
    $idButtonOK = GUICtrlCreateButton("OK", 50, 250, 100, 50)
    GUISetState()

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

    While 1

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

    Switch GUIGetMsg()

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

    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $idButtonOK
    MsgBox(0, "Resultat", "Arbeiten bis: " & Number(GUICtrlRead($idInputBeginn)) + Number(GUICtrlRead($idInputStunden))) ; Arbeiten bis ...

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

    EndSwitch
    WEnd

    [/autoit]


    Gruss Shadowigor

  • Also habe ich das richtig verstanden???

    Musst ja keine gui benutzten zwei input gehen doch auch oder?!


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

    $Zeit = inputbox (1,"Aktuelle Zeit z. B. 10.55","Eingeben:")

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

    $über = inputbox (1,"Überstunden eingeben","z.B. 1.20")

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

    $Ende = $Zeit + 7.44 - $über

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

    Msgbox (1,"Arbeitsende",$Ende)
    # Statt der Msgbox kannst du hier jetzt auch ne gui einsetzten die das ergebnis anzeigt

    [/autoit]

    Ich habe es nicht getestet da ich gerade nur Handy habe..
    Die rechnung musst du eventuell berichtigen ich weiß net ob das so geht...
    Denke aber...
    Viel glück :rock:

  • Ersteinmal vielen dank für eure schnelle Hilfe :)
    @Shadowigor Danke für deine mühe aber dass ist nicht das was ich meinte.

    @Basti2022 Ganz genau so :) du hast den Nagel auf den Kopf getroffen! Ich danke dir vielmals, dachte nicht dass es so einfach ist. Habe es mir komplizierter vorgestellt.
    Ich werde die Befehle jetzt noch versuchen in meine gui einbinden und dann bin ich Glücklich. Vielen dank das erspart mir auf der Arbeit immer das lästige nachrechnen :)


    Nach rumprobieren mit dem Interface, bekomme ich jedesmal als Ergenis 06.44 ?

    Wieso?

    [autoit]

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

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $Form1 = GUICreate("Gleitzeitrechner", 210, 250, 229, 124)
    ;Zeit Eingabe____________________________________________
    $Input1 = GUICtrlCreateInput("08.00", 16, 40, 177, 21)
    $Input2 = GUICtrlCreateInput("03.45", 16, 96, 177, 21)
    ;label____________________________________________________
    $Label1 = GUICtrlCreateLabel("Überstunden", 16, 72, 65, 17)
    $Label2 = GUICtrlCreateLabel("Arbeitsbeginn", 16, 16, 68, 17)
    ;Buttons___________________________________________________
    $Feierabend = GUICtrlCreateButton("Feierabend", 16, 136, 177, 65)
    $Beenden = GUICtrlCreateButton("Beenden", 16, 216, 177, 17)
    GUISetState(@SW_SHOW)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

    $schluss = $Input1 + 7.44 - $Input2

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Beenden
    Exit
    Case $Feierabend
    Msgbox (1,"Arbeitsende",$schluss)

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

    EndSwitch
    WEnd

    [/autoit]

    2 Mal editiert, zuletzt von davebxt (28. August 2012 um 15:42)

  • Spoiler anzeigen
    [autoit]

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

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

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    $Form1 = GUICreate("Gleitzeitrechner", 210, 250, 229, 124)
    ;Zeit Eingabe____________________________________________
    $Input1 = GUICtrlCreateInput("08.00", 16, 40, 177, 21)
    $Input2 = GUICtrlCreateInput("03.45", 16, 96, 177, 21)
    ;label____________________________________________________
    $Label1 = GUICtrlCreateLabel("Überstunden", 16, 72, 65, 17)
    $Label2 = GUICtrlCreateLabel("Arbeitsbeginn", 16, 16, 68, 17)
    ;Buttons___________________________________________________
    $Feierabend = GUICtrlCreateButton("Feierabend", 16, 136, 177, 65)
    $Beenden = GUICtrlCreateButton("Beenden", 16, 216, 177, 17)
    GUISetState(@SW_SHOW)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Beenden
    Exit
    Case $Feierabend
    $schluss = Guictrlread($Input1) + 7.44 - Guictrlread($Input2)
    Msgbox (1,"Arbeitsende",$schluss)

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

    EndSwitch
    WEnd

    [/autoit]

    Du musst die Zeit berechnen, wenn du auf den Button klickst nicht vorher ;)
    Weiterhin musst du Guictrlread benutzen, da $Input1 nur die COntrolID und nicht den Inhalt des Controls ausgibt

  • meinst du vielleicht sowas:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Global $f_start = False
    Global $a_time[3] = [2, @HOUR, @MIN]
    Global $i_hour, $i_min

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

    Global $h_GUI = GUICreate("Arbeitszeitrechner!", 270, 40)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Terminate")
    GUICtrlCreateLabel("Arbeitsbeginn:", 10, 13, 70, 20)
    For $i = 1 To $a_time[0]
    $a_time[$i] = GUICtrlCreateInput($a_time[$i], 40 + ($i * 50), 10, 40, 20)
    GUICtrlCreateUpdown($a_time[$i])
    Next
    GUICtrlSetLimit($a_time[1], 23, 0)
    GUICtrlSetLimit($a_time[2], 59, 0)
    $h_button = GUICtrlCreateButton("OK", 190, 10, 70, 20)
    GUICtrlSetOnEvent($h_button, "_TimerStarten")
    GUISetState(@SW_SHOW, $h_GUI)

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

    While Sleep(2000)
    If $f_start Then
    Do
    Sleep(200)
    Until $i_hour = @HOUR
    Do
    Sleep(200)
    Until $i_min = @HOUR
    MsgBox(64, "INFO!", "Gleitzeit ist um!")
    Exit
    EndIf
    WEnd

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

    Func _Terminate()
    GUIDelete($h_GUI)
    Exit
    EndFunc

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

    Func _TimerStarten()
    $i_hour = Int(GUICtrlRead($a_time[1])) + 7
    $i_min = Int(GUICtrlRead($a_time[2])) + 44
    If $i_min > 59 Then
    $i_hour += 1
    $i_min -= 59
    EndIf
    If $i_hour > 23 Then $i_hour -= 24
    MsgBox(64, "Arbeitsende!", "Stunde:" & @TAB & $i_hour & @CRLF & _
    "Minute:" & @TAB & $i_min)
    $f_start = True
    EndFunc

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

    ist natürlich ungetestet ;)