Arbeitszeiten dokumentieren (überstunden fehlen)

  • Hallo liebe Community,

    da ich mein Script/Programm bereits HIER vorgestellt habe, fällt das an dieser Stelle erstmal weg ;)

    Ich habe nur noch das Problem, dass ich die Überstunden auch mit in die Text-Datei haben will.
    Das Programm soll also ohne offen bleiben zu müssen, irgendwie Start-, End- und Pausenzeiten miteinander verrechnen und die Überstunden dann auch mit in das .txt file schreiben.
    Ob es dabei irgendwo eine zweite Datei mit dem Zwischengespeicherten Ergebnis speichert oder was der Geier was, ist mir dabei total egal!

    Danke schon einmal im vorraus.

    Gruß
    Dome

    #Edit:
    Da manche mit Dos-Befehlen nicht können/wollen, hab ich das Script jetzt mal bearbeitet ;)
    Großes Dankeschön für die Hilfe dabei an Christoph54

    #Edit:
    Alles fertig alles super.
    Es wird alles korreckt dokumentiert und verrechnet.
    Ich empfehle euch, die Werte in einer .csv-Datei zu speichern, weil es einfach übersichtlicher ist.
    Hier einmal die Version mit einer .csv Ausgabe und die mit einer .txt-Ausgabe.
    Die .txt-Version kann JEDER benutzten, bei der .csv-Version ist MS-Office erforderlich (oder ein anderes Programm, dass .csv-Dateien öffnen kann).

    #Edit:
    Die csv-Version werde ich öfters mal Updaten.
    Die Updates werde ich dann aber hier NICHT posten, sonder in den anderen Thread HIER !

    Hier die "neuen" Versionen:

    .csv-Version:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Autor: Domenick L.
    Kontakt: [email='dnick92@web.de'][/email]

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

    Script Funktion:
    Dokumentiert ihre Arbeitzeiten samt Pausen übersichtlich in einer Text-Datei.
    Es werden hierbei nur Die Start- und Endzeiten dokumentiert!

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

    #ce ----------------------------------------------------------------------------

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

    #NoTrayIcon

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

    GUICreate("Arbeitszeiten", 300, 190)

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

    $Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35)
    $Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
    $Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
    $PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
    $PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)

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

    GUICtrlCreateLabel ("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10)
    GUICtrlCreateLabel ("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
    GUICtrlCreateLabel ("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
    GUICtrlCreateLabel ("Das Dokument wird Standardmäßig als .csv-Datei", 10, 65)
    GUICtrlCreateLabel ("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)

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

    Global $Datum = @MDAY & "." & @MON & "." & @YEAR
    Global $kurzDatum = @MON & "." & @YEAR
    Global $Pfad = ("C:\Users\"&@UserName&"\Arbeits-Info")
    Global $csvPfad = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten-"&$kurzDatum&".csv")
    Global $ini = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten.ini")
    Global $section = ("Arbeitszeiten")

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

    If Not FileExists ($Pfad) Then DirCreate ($Pfad)

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

    GUISetState()

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

    Do
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $Start
    FileWrite ($csvPfad, "########### ;" & $Datum & " ;###########" & @CRLF & "Begonnen ; ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    If FileExists ($ini) Then FileDelete ($ini)
    IniWrite ($ini, $section, "StartHH", @HOUR)
    IniWrite ($ini, $section, "StartMM", @MIN)
    IniWrite ($ini, $section, "StartSS", @SEC)
    Case $msg = $PauseStart
    FileWrite ($csvPfad, "Pause von ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    IniWrite ($ini, $section, "PauseStartHH", @HOUR)
    IniWrite ($ini, $section, "PauseStartMM", @MIN)
    IniWrite ($ini, $section, "PauseStartSS", @SEC)
    Case $msg = $PauseEnde
    FileWrite ($csvPfad, "Pause bis ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    IniWrite ($ini, $section, "PauseEndeHH", @HOUR)
    IniWrite ($ini, $section, "PauseEndeMM", @MIN)
    IniWrite ($ini, $section, "PauseEndeSS", @SEC)
    Case $msg = $Stop
    FileWrite ($csvPfad, "Beendet ; ;" & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    IniWrite ($ini, $section, "BeendetHH", @HOUR)
    IniWrite ($ini, $section, "BeendetMM", @MIN)
    IniWrite ($ini, $section, "BeendetSS", @SEC)
    _GesamtPause ()
    _Gesamt ()
    FileWrite ($csvPfad, "Gesamt ;" & $PauseHH & ":" & $PauseMM & ":" & $PauseSS & ";" & $GesamtHH & ":" & $GesamtMM & ":" & $GesamtSS & @CRLF)
    FileWrite ($csvPfad, "=================================" & @CRLF)
    EndSelect
    Until $msg = -3 or $msg = $Ende

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

    Func _Gesamt ()
    Global $GesamtHH1 = IniRead ($ini, $section, "BeendetHH", @HOUR) - IniRead ($ini, $section, "StartHH", @HOUR)
    Global $GesamtMM1 = IniRead ($ini, $section, "BeendetMM", @MIN) - IniRead ($ini, $section, "StartMM", @MIN)
    Global $GesamtSS1 = IniRead ($ini, $section, "BeendetSS", @SEC) - IniRead ($ini, $section, "StartSS", @SEC)
    Global $GesamtHH = $GesamtHH1 - $PauseHH
    Global $GesamtMM = $GesamtMM1 - $PauseMM
    Global $GesamtSS = $GesamtSS1 - $PauseSS
    EndFunc

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

    Func _GesamtPause ()
    Global $PauseHH = IniRead ($ini, $section, "PauseEndeHH", @HOUR) - IniRead ($ini, $section, "PauseStartHH", @HOUR)
    Global $PauseMM = IniRead ($ini, $section, "PauseEndeMM", @MIN) - IniRead ($ini, $section, "PauseStartMM", @MIN)
    Global $PauseSS = IniRead ($ini, $section, "PauseEndeSS", @SEC) - IniRead ($ini, $section, "PauseStartSS", @SEC)
    EndFunc

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

    Exit

    [/autoit]

    .txt-Version:

    Spoiler anzeigen

    [autoit#cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.8.1
    Autor: Domenick L.
    Kontakt: dnick92@web.de

    Script Funktion:
    Dokumentiert ihre Arbeitzeiten samt Pausen übersichtlich in einer Text-Datei.
    Es werden hierbei nur Die Start- und Endzeiten dokumentiert!

    #ce ----------------------------------------------------------------------------

    #NoTrayIcon

    GUICreate("Arbeitszeiten", 300, 190)

    $Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35)
    $Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
    $Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
    $PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
    $PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)

    GUICtrlCreateLabel ("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10)
    GUICtrlCreateLabel ("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
    GUICtrlCreateLabel ("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
    GUICtrlCreateLabel ("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
    GUICtrlCreateLabel ("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)

    Global $Datum = @MDAY & "." & @MON & "." & @YEAR
    Global $kurzDatum = @MON & "." & @YEAR
    Global $Pfad = ("C:\Users\"&@UserName&"\Arbeits-Info")
    Global $txtPfad = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten-"&$kurzDatum&".txt")
    Global $ini = ("C:\Users\"&@UserName&"\Arbeits-Info\Arbeitszeiten.ini")
    Global $section = ("Arbeitszeiten")

    If Not FileExists ($Pfad) Then DirCreate ($Pfad)

    GUISetState()

    Do
    $msg = GUIGetMsg()

    Select
    Case $msg = $Start
    FileWrite ($txtPfad, "####NEUER TAG#### - " & $Datum & @CRLF & "Arbeitszeiten von " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    If FileExists ($ini) Then FileDelete ($ini)
    IniWrite ($ini, $section, "StartHH", @HOUR)
    IniWrite ($ini, $section, "StartMM", @MIN)
    IniWrite ($ini, $section, "StartSS", @SEC)
    Case $msg = $PauseStart
    FileWrite ($txtPfad, "Pause von " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    IniWrite ($ini, $section, "PauseStartHH", @HOUR)
    IniWrite ($ini, $section, "PauseStartMM", @MIN)
    IniWrite ($ini, $section, "PauseStartSS", @SEC)
    Case $msg = $PauseEnde
    FileWrite ($txtPfad, "Pause bis " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    IniWrite ($ini, $section, "PauseEndeHH", @HOUR)
    IniWrite ($ini, $section, "PauseEndeMM", @MIN)
    IniWrite ($ini, $section, "PauseEndeSS", @SEC)
    Case $msg = $Stop
    FileWrite ($txtPfad, "Arbeitszeit bis " & @HOUR & ":" & @MIN & ":" & @SEC & @CRLF)
    IniWrite ($ini, $section, "BeendetHH", @HOUR)
    IniWrite ($ini, $section, "BeendetMM", @MIN)
    IniWrite ($ini, $section, "BeendetSS", @SEC)
    _GesamtPause ()
    _Gesamt ()
    FileWrite ($txtPfad, "PauseGesamt " & $PauseHH & ":" & $PauseMM & ":" & $PauseSS & @CRLF)
    FileWrite ($txtPfad, "Arbeitszeit " & $GesamtHH & ":" & $GesamtMM & ":" & $GesamtSS & @CRLF)
    FileWrite ($txtPfad, "=================================" & @CRLF)
    EndSelect
    Until $msg = -3 or $msg = $Ende

    Func _Gesamt ()
    Global $GesamtHH1 = IniRead ($ini, $section, "BeendetHH", @HOUR) - IniRead ($ini, $section, "StartHH", @HOUR)
    Global $GesamtMM1 = IniRead ($ini, $section, "BeendetMM", @MIN) - IniRead ($ini, $section, "StartMM", @MIN)
    Global $GesamtSS1 = IniRead ($ini, $section, "BeendetSS", @SEC) - IniRead ($ini, $section, "StartSS", @SEC)
    Global $GesamtHH = $GesamtHH1 - $PauseHH
    Global $GesamtMM = $GesamtMM1 - $PauseMM
    Global $GesamtSS = $GesamtSS1 - $PauseSS
    EndFunc

    Func _GesamtPause ()
    Global $PauseHH = IniRead ($ini, $section, "PauseEndeHH", @HOUR) - IniRead ($ini, $section, "PauseStartHH", @HOUR)
    Global $PauseMM = IniRead ($ini, $section, "PauseEndeMM", @MIN) - IniRead ($ini, $section, "PauseStartMM", @MIN)
    Global $PauseSS = IniRead ($ini, $section, "PauseEndeSS", @SEC) - IniRead ($ini, $section, "PauseStartSS", @SEC)
    EndFunc

    Exit][/autoit]

    ===============================================================================

    Und hier dann noch mal die "alte", aber auch auskommentierte Version:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Autor: Domenick L.
    Kontakt: [email='dnick92@web.de'][/email]

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

    Script Funktion:
    Dokumentiert ihre Arbeitzeiten samt Pausen übersichtlich in einer Text-Datei.
    Es werden hierbei nur Die Start- und Endzeiten dokumentiert!

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

    #ce ----------------------------------------------------------------------------

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

    #include <Process.au3> ; erlaubt das Benutzen von _RunDos
    #include <GUIConstantsEx.au3> ; erlaubt das Benutzen von $GUI_EVENT_CLOSE

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

    GUICreate("Arbeitszeiten", 300, 190) ; erstellt das Fenster mit Name und Größe

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

    $Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35) ; erstellt die einzelnen Knöpfe mit Namen und Größen samt Eingabe-Funktionen
    $Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
    $Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
    $PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
    $PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)

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

    GUICtrlCreateLabel ("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10) ; erstellt den Angezeigten Text an den vorgegebenen Positionen
    GUICtrlCreateLabel ("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
    GUICtrlCreateLabel ("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
    GUICtrlCreateLabel ("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
    GUICtrlCreateLabel ("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)

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

    _RunDos ("md C:\Users\%USERNAME%\Arbeits-Info") ; erstellt den Ordner C:\Users\%USERNAME%\Arbeits-Info, wobei %USERNAME% für die Variable des Benutzernamens steht, damit jeder dieses Programm nutzen kann.

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

    GUISetState() ; macht das Fenster sichtbar

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

    Do
    $msg = GUIGetMsg() ; wartet auf Eingabe

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

    Select ; unterscheidet zwischen den verschiedenen Eingabe-Signalen der verschiedenen Knöpfe
    Case $msg = $Start ; drückt man den Knopf mit der Bezeichnung "Start", führt das Programm folgende Befehle aus:
    _RunDos ("echo ####NEUER TAG#### - %DATE% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Kopfzeile & Datum werden in die Text-Datei geschrieben
    _RunDos ("echo Arbeiszeit von %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Arbeitszeitbeginn wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
    Case $msg = $PauseStart ; drückt man den Knopf mit der Bezeichnung "PauseStart", führt das Programm folgende Befehle aus:
    _RunDos ("echo Pause von %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Pausenbeginn wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
    Case $msg = $PauseEnde ; drückt man den Knopf mit der Bezeichnung "PauseEnde", führt das Programm folgende Befehle aus:
    _RunDos ("echo Pause bis %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Pausenende wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
    Case $msg = $Stop ; drückt man den Knopf mit der Bezeichnung "Stop", führt das Programm folgende Befehle aus:
    _RunDos ("echo Arbeitszeit bis %time:~0,8% >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; Arbeitszeitende wird mit der aktuellen Zeit (sekundengenau) in die Text-Datei geschieben
    _RunDos ("echo ================================ >>C:\Users\%USERNAME%\Arbeits-Info\Arbeitszeiten-%date:~3%.txt") ; ein Zeichen zur leichteren Unterscheidung der einzelnen Tage wird als Schluss in die Text-Datei geschrieben
    EndSelect ;
    Until $msg = $GUI_EVENT_CLOSE or $msg = $Ende ; lässt das Programm diese Aktion so lange wiederholen, bis man auf "Ende" oder "X" klickt

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

    Exit ; schließt das Programm/Script

    [/autoit]

    8 Mal editiert, zuletzt von Gabbadome (11. September 2012 um 11:20)

  • Hallo vom smartphone.
    Erstelle eine ini^^
    inhalt
    Aktueller tag=blala

    Dannfrage ab ist der aktuelle tag heute ? (tu das progra
    M viellleicht sogar in autostart) wenn nein
    Schreibe kommen in text datei. Nicht per dos ?
    FileWrite is autoit eigen und funktioniert auch.
    Pause legst du mit hotkeys ins programm zb alt strg pause
    Startet pause und selbe kombi endet pause.
    In der ini kannst du nun auch die zeit festhalten zu der du gekommen bist,
    Um später die endgültige arbeitszeit auszurechenen.

    Die verwendung von dos erscheint mit hier fehl am platz.


    Solltest du mit den funktionen n problem haben kannste gerne ne pm schreiben.
    Überstunden erkennt es als arbeitszeit ? Dann hast du ihm keine max arbeitszeit gegeben
    Mit dem es überstunden ausrechnen kann.
    Wenn du möchtest schreib ichs dir nacher n bisschen um
    Das das funktioniert. Unterstützen tu ich solche workarounds
    Für dies eigentlich funktionen giebt aber eigentlich nicht.


    Mfg


    €dit bitte lasst doch das geflame ala post über mit wenns nicht hilft

    -

  • Danke für deine Antwort Nachid, auch wenn dein Handy ein sehr komisches Deutsch ausspuckt.
    Ich glaube ihr habt beide nicht wirklich mal im Script geschaut was es tut oder?
    Ich habe die Dos-Befehle genommen weil es für mich sehr viel einfacher geht, und ich auch bis vor ein paar wochen immer alles mit Batch Dateien gemacht habe.
    Das Programm schreibt bereits die Arbeits und Pausen Zeiten in eine Text-Datei, ich möchte nur wissen wie ich diese dann verrechnen kann.

    Also lest doch vorher mal ausführlich das Script bzw führt es mal aus bevor so komischen Antworten kommen.

    Danke trotzdem.

    Gruß
    Dome

  • Nur mal so zur Info: Ich habe mir dein Scriptchen angesehen und ich habe die 'gewünschte' Funktion auch verstanden, aber wie soll ich denn an deinem Script erkennen, dass du bis vor Kurzem 'alles' mit Batch-Scripten erledigt hast? Ich mein ich kann das doch nicht riechen? ^^ Naja wie dem auch sei solltest du dir, auch wenn du scheinbar sehr viel Überwindung dafür benötigst, den passenden Hilfe-Eintrag zu FileWrite() anschauen... ;)

    LG
    Christoph :)

  • Okay wenn du nur die methode wissen willst :
    Erfasse die arbeitszeit in einer ini bei kommen
    Erfasse pause zeite. Bei pause
    Erfasse gehen bei gehen
    Lies dann die erfassten zeiten als string ein.
    Teile sie in ihre bestandteile mit stringsplitt
    Verrechne nun stunden und minuten.
    Frage mit if ab ob sekunden über 60 wenn ja minute + 1 und sek -60
    Frage mit if ab ob minute über 60 wenn ja stunde +1 minute -60
    Zur vollständigkeit kannst du das mit tagen auch machen.
    Zur sicherheit würde ich dafür do schleifen verwenden. Until minute <60 und so^^
    nun hast du die arbeitszeit. Von der kannst du minuten sekunden und stunden für pausen o.ä. Abziehen.
    Diese einzelnen values kannst du nun gegen deine raz prüfen um
    Überstunden zu filtern. Hätte mein iphone ne ide würd ichs dir schreiben^^

    -

  • Nur mal so zur Info: Ich habe mir dein Scriptchen angesehen und ich habe die 'gewünschte' Funktion auch verstanden, aber wie soll ich denn an deinem Script erkennen, dass du bis vor Kurzem 'alles' mit Batch-Scripten erledigt hast? Ich mein ich kann das doch nicht riechen? ^^ Naja wie dem auch sei solltest du dir, auch wenn du scheinbar sehr viel Überwindung dafür benötigst, den passenden Hilfe-Eintrag zu FileWrite() anschauen... ;)

    Wenn ich aber Filewrite nehme, müsste ich ja extra Variablen für Datum, Uhrzeit usw erstellen und da habe ich einfach kein nerv zu.
    Sollte es eine andere Möglichkeit geben, dann erklärs mir bitte ;)

    Damit kann ich überhaupt nichts anfangen, da ich noch totaler Anfänger bin ;)
    Danke aber trotzdem

    Gruß
    Dome

  • Okay hab meine bahn verpasst. Du müsstest natürlich ein paar variablen anlegen.
    Befehle wären iniwrite iniread stringsplit execute filewrite (musste kein handle erstellen geht auh ohne)
    Die time befehle weis ich nicht auswenig sry. Schau dir am besten die hilfe dazu an.
    Oder warte noch ne stunde >.>

    -

  • Okay hab meine bahn verpasst. Du müsstest natürlich ein paar variablen anlegen.
    Befehle wären iniwrite iniread stringsplit execute filewrite (musste kein handle erstellen geht auh ohne)
    Die time befehle weis ich nicht auswenig sry. Schau dir am besten die hilfe dazu an.
    Oder warte noch ne stunde >.>

    Ich hab grad eh Mitagspause und guck mir ein paar Gameplays an.
    Alo ich kann warten ^^

  • Sollte es eine andere Möglichkeit geben, dann erklärs mir bitte

    Zum Beispiel so:

    Spoiler anzeigen
    [autoit]

    GUICreate("Arbeitszeiten", 300, 190)
    $Start = GUICtrlCreateButton("Anfang", 10, 105, 90, 35)
    $Stop = GUICtrlCreateButton("Feierabend", 110, 105, 90, 35)
    $Ende = GUICtrlCreateButton("Ende", 230, 150, 60, 30)
    $PauseStart = GUICtrlCreateButton("Pause-Start", 10, 150, 90, 30)
    $PauseEnde = GUICtrlCreateButton("Pause-Ende", 110, 150, 90, 30)
    GUICtrlCreateLabel("Dieses Programm dokumentiert deine Arbeitszeiten.", 10, 10)
    GUICtrlCreateLabel("Beginnst du deinen Arbeitstag, drücke ""Anfang"",", 10, 35)
    GUICtrlCreateLabel("Beendest du ihn, drücke ""Feierabend"".", 10, 50)
    GUICtrlCreateLabel("Das Dokument wird Standardmäßig als .txt-Datei", 10, 65)
    GUICtrlCreateLabel("in dem Ordner C:\Users\User\Arbeits-Info gespeichert.", 10, 80)
    ; Bis hier habe ich dein Script eigentlich nur etwas 'geschrumpft'...
    ; Die folgenden Deklarationen (So nennt man das wenn man ne Variable erstellt) dienen nur der Vereinfachung/verkürzung des Scripts:
    Global $Dir = @UserProfileDir & '\Arbeits-Info\' ; In der Variable $Dir speichern wir den Pfad zu unserem 'Arbeitsverzeichniss'
    Global $Date = @MDAY & '/' & @MON & '/' & @YEAR ; $Date wird mit dem heutigen Datum sammt trennzeichen bestückt
    Global $LogFile = $Dir & 'Arbeitszeiten-' & $Date & '.txt' ; und in $LogFile speichern wir uns den kompletten Pfad zu unserer Log-datei...
    If Not FileExists($Dir) Then DirCreate($Dir) ; Wenn du die englische Sprache beherrschst, sollte diese zeile wohl klar sein... :P
    GUISetState(@SW_SHOW)

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

    Do
    $msg = GUIGetMsg()
    Select
    Case $msg = $Start
    ; Zu fileWrite kannst du dir ja mal die benötigten parameter ind er Hilfe ansehen... ;)
    ; Anonsten werden hier nur Variablen, Strings (Zeichenketten) und Autoit interne Makros (zB. @HOUR -> aktuelle Stunde)verwendet...4
    ; Sie alle werden in der Hilfe erläutert... ;)
    FileWrite($LogFile, '####NEUER TAG#### - ' & $Date & @CRLF & 'Arbeiszeit von ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
    Case $msg = $PauseStart
    FileWrite($LogFile, 'Pause von ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
    Case $msg = $PauseEnde
    FileWrite($LogFile, 'Pause bis ' & @HOUR & ':' & @MIN & ':' & @SEC & @CRLF)
    Case $msg = $Stop
    FileWrite($LogFile,'Arbeitszeit bis '& @HOUR & ':' & @MIN & ':' & @SEC & @CRLF & '================================' & @CRLF)
    EndSelect
    Until $msg = -3 Or $msg = $Ende ; in dieser zeile habe ich noch $GUI_EVENT_CLOSE durch -3 ersetzt, da dann das große Include nicht mehr benötigt wird... ;)

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

    Exit

    [/autoit]

    Ja ich habe dein Script 'nur' nach Autoit portiert... ;)

    Und wenn du keinen 'Nerv' zum deklarieren von variablen hast, dann kannst du das mit dem programmieren gleich wieder lassen... :P
    Edit: Ich habe meinen/deinen Code mal auskommentiert... Noch ein kleiner Tipp: drück in Scite öfter mal F1 ;)

    LG
    Christoph :)

    2 Mal editiert, zuletzt von BinDannMalWeg (6. September 2012 um 14:36)

  • Sehr schön. Den großteil hab ich auch verstanden.
    Kansst du vielleicht trotzdem bitte mal die neuen Funktionen auskommentieren, damit ich auch weiß was da passiert.
    Ich bin auch eigentlich kein Programmierer sondern ein Netzwerker :P
    Programmieren tu ich nur nebenbei aus Langeweile bzw Spaß neues zu lernen.
    AutoIt nutze ich halt erst seid ein paar Wochen und kann daher nur annähernde Grundlagen ;)

    Gruß
    Dome

  • Es is nur portiert. Von der reihenfolge der befehle und der wirkung ist alles absolut gleicb.
    @Hour ist die aktuelle stunde usw. Berechnen oder überstunden auswerten tut das noch lange nicht^^

    -

  • Es is nur portiert. Von der reihenfolge der befehle und der wirkung ist alles absolut gleicb.
    @Hour ist die aktuelle stunde usw. Berechnen oder überstunden auswerten tut das noch lange nicht^^


    Dann warte ich jetzt auf dich, und bin gespannt auf deine Lösung ;)

  • Wenn du das getan hättest wäre es nie zu diesem Thread und deinem Script gekommen. Wenn es nicht lernen willst dann lass es gleich bleiben ;).

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Super Sache. Das mit F1 hab ich noch nicht mal gewusst :D Danke werde ich benutzen.
    Dein Script funktioniet allerdings nicht wie ich grade herausgefunden habe ^^

    Gruß
    Dome