Hey,
Mein vater ist so Strom bessesen, das er sich die daten immer aufschreibt & dan in eine Excel tabelle einfügt. Ich wollte ihm das ganze jz erleichtern indem ich ihn dafür ein Programm schreibe, es soll ein error log haben, wo wirklich jeder noch so kleine fehler angezeigt werden soll (ihm ist die datei echt wichtig^^) Aber er schreibt sie nicht immer am aktuellen tag in die Excel tabelle & möchte deswegen das Datum ändern können (datum deswegen, damit man weiß wo es reingeschrieben werden soll, aber da skommt noch^^) Er soll es einmal selbst eingeben können (wechs. button) & -1 & +1 machen können. Aber da nicht immer aktuell sein soll, weil er ja
nicht jeden tag aufschriebt & er selbst erkennen sollte (naja fast selbst^^) wo er stehen geblieben ist. Soll ein datum aus einer .ini datei gelesen werden. Default dabei ist _NowDate()
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Date.au3>
#include <string.au3>
#include <Array.au3>
#include <GuiEdit.au3>
#include <Excel.au3>
Global $IGas,$ISolar,$IStrom,$IWasser,$Speichern,$AltPfad,$oExcel = "",$Array,$Schreiben = False,$Gas,$Strom,$Wasser,$Solar,$LDatum,$IDatum,$Date
[/autoit] [autoit][/autoit] [autoit]_Read()
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
$Main = GUICreate("Erträge", 383, 324)
$Tab0 = GUICtrlCreateTab(0,0,388,208)
$Log = GUICtrlCreateEdit("Log", 0, 208, 383, 113 ,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$ES_READONLY,$WS_HSCROLL,$WS_VSCROLL))
$hEdit = GUICtrlGetHandle($Log)
GUICtrlSetData(-1, "")
$Tab1= GUICtrlCreateTabItem("Speichern")
GUICtrlSetTip(-1,"Hier kannst du deine Erträge Speichern!")
$Label1 = GUICtrlCreateLabel("Strom:", 16, 48, 34, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$IStrom = GUICtrlCreateInput("", 64, 48, 89, 21)
GUICtrlSetTip(-1,"Stromdaten nach hier")
$Label2 = GUICtrlCreateLabel("Solar:", 176, 48, 31, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$ISolar = GUICtrlCreateInput("", 224, 48, 89, 21)
GUICtrlSetTip(-1,"Solar Ertrag nach hier")
$Label3 = GUICtrlCreateLabel("Gas:", 16, 88, 26, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$IGas = GUICtrlCreateInput("", 64, 88, 89, 21)
GUICtrlSetTip(-1,"Gasstand hier Eintragen")
$Label4 = GUICtrlCreateLabel("Wasser:", 176, 88, 48, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$IWasser = GUICtrlCreateInput("", 224, 88, 89, 21)
GUICtrlSetTip(-1,"Wasserstand hier Eintragen")
$Speichern = GUICtrlCreateButton("OK", 144, 160, 75, 25, 0)
GUICtrlSetTip(-1,"Damit Bestätigs du das Speichern")
$LDatum = GUICtrlCreateLabel("Datum: " & $Date, 140, 128, 100, 17)
$Minus1 = GUICtrlCreateButton("-1", 105, 128, 27, 15, 0)
$Plus1 = GUICtrlCreateButton("+1", 240, 128, 27, 15, 0)
$wechs = GUICtrlCreateButton("wechs.", 50, 128, 43, 15, 0)
$Tab2 = GUICtrlCreateTabItem("Anzeigen")
GUICtrlSetTip(-1,"Anzeige der Älteren Erträge")
$Tab3 = GUICtrlCreateTabItem("Daten ändern")
GUICtrlSetTip(-1,"Ändern der Alten Daten")
$Tab4 = GUICtrlCreateTabItem("Einstellungen")
GUICtrlSetTip(-1,"Einstellungen ändern")
$LPfad = GUICtrlCreateLabel("Dateipfad:", 24, 35, 53, 17)
$IPfad = GUICtrlCreateInput($AltPfad, 24, 59, 265, 21)
GUICtrlSetTip(-1,"Manuel den Pfad eintragen")
$Browse = GUICtrlCreateButton("Browse", 304, 59, 67, 21, 0)
GUICtrlSetTip(-1,"Ordnerverzeichnis öffnen")
$SpeichernEin = GUICtrlCreateButton("Speichern", 144, 160, 75, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_ExcelBookClose($oExcel)
Exit
Case $Speichern
_Save()
Case $Browse
_Browse()
Case $SpeichernEin
$Pfad = GUICtrlRead($IPfad)
If $Pfad = "" Then
_write_log($Log, "Ungültiger Dateipfad!", $Main)
Else
IniWrite(@ScriptDir & "\config.ini","Einstellungen","Pfad",$Pfad)
_write_log($Log, "Dateipfad Gespeichert!", $Main)
EndIf
Case $Plus1
$Date = _DateAdd('d',1, $Date)
GUICtrlSetData($LDatum,$Date)
EndSwitch
WEnd
Func _Save()
GUICtrlSetState($IStrom,$GUI_DISABLE)
GUICtrlSetState($ISolar,$GUI_DISABLE)
GUICtrlSetState($IGas,$GUI_DISABLE)
GUICtrlSetState($IWasser,$GUI_DISABLE)
GUICtrlSetState($Speichern,$GUI_DISABLE)
$Strom = GUICtrlRead($iStrom)
$Solar = GUICtrlRead($ISolar)
$Gas = GUICtrlRead($IGas)
$Wasser = GUICtrlRead($IWasser)
If StringRegExp($Strom, '^\d+(?:\,\d)?$') and StringRegExp($Solar, '^\d+(?:\,\d)?$') and StringRegExp($Gas, '^\d+(?:\,\d\d\d)?$') and StringRegExp($Wasser, '^\d+$') Then
_write_log($Log , "Erfolgreich Ausgelesen!", $Main)
_Excel_Check()
If IsArray($Array) Then
If $Strom < $Array[0] or $Solar < $Array[1] or $Gas < $Array[2] or $Wasser < $Array[3] Then
_write_log($Log , "Angegebende Daten sind kleiner als alte Daten!", $Main)
_Error()
Else
_write_log($Log , "Daten werden hinzugefügt...", $Main)
_Excel_Schreiben()
_write_log($Log , "Daten erfolgreich hinzugefügt!", $Main)
$Schreiben = True
EndIf
EndIf
Else
_write_log($Log , "Keine oder Unrealistische Zahlen angegeben!", $Main)
_Error()
EndIf
EndFunc
Func _write_log($iLog, $sText, $hWND)
GUICtrlSetData($iLog, GUICtrlRead($iLog)&@HOUR&":"&@MIN&":"&@SEC& @TAB &$sText&@CRLF)
ControlSend($hWND, "", $iLog, "{end}")
_GUICtrlEdit_LineScroll($hEdit, 0, _GUICtrlEdit_GetLineCount($hEdit))
EndFunc
Func _Error()
GUICtrlSetState($IStrom,$GUI_ENABLE)
GUICtrlSetState($ISolar,$GUI_ENABLE)
GUICtrlSetState($IGas,$GUI_ENABLE)
GUICtrlSetState($IWasser,$GUI_ENABLE)
GUICtrlSetState($Speichern,$GUI_ENABLE)
If $Schreiben = False Then
_write_log($Log , "Vorgang wurde Abgebrochen!", $Main)
ElseIf $Schreiben = True Then
_write_log($Log , "Vorgang erfolgreich abgeschlossen!", $Main)
EndIf
$Schreiben = False
EndFunc
Func _Browse()
Local $PfadFile = ""
$FilePfad = IniRead(@ScriptDir & "\config.ini","Einstellungen","Pfad","")
If $FilePfad = "" Then
$PfadFile = @DesktopDir
Else
$FilePfad = StringSplit($FilePfad,"\")
$LenghFile = Ubound($FilePfad)-2
For $i = 1 To $LenghFile
$PfadFile = $PfadFile & $FilePfad[$i] & "\"
Next
EndIf
$File = FileOpenDialog("Excel Pfad auswählen",$PfadFile,"Excel (*.xlsx;*.xls)")
If Not $File = "" Then GUICtrlSetData($IPfad,$File)
EndFunc
Func _Read()
$AltPfad = IniRead(@ScriptDir & "\config.ini","Einstellungen","Pfad","")
$Date = IniRead(@ScriptDir & "\config.ini","Einstellungen","Datum",_NowDate())
EndFunc
Func _Excel_Check()
_Read()
Local $Check = True
While $Check = True
$Array = _ExcelReadArray($oExcel,1,1,4)
If @error = 1 Then
$oExcel = _ExcelBookOpen($AltPfad,0)
If @error = 1 Then
_write_log($Log , "Konnte kein Excel Objekt erstellen!", $Main)
ElseIf @error = 2 Then
_write_log($Log , "Datei existiert nicht", $Main)
$Check = False
_Error()
EndIf
ElseIf @error = 2 Then
_write_log($Log , "Parameter außerhalb des Bereiches", $Main)
$Check = False
_Error()
ElseIf @error = 3 Then
_write_log($Log , "Ungültige Anzahl von Zellen", $Main)
$Check = False
_Error()
ElseIf @error = 4 Then
_write_log($Log , "Ungültige Richtungsparameter", $Main)
$Check = False
_Error()
ElseIf @error = 0 Then
$Check = False
EndIf
WEnd
EndFunc
Func _Excel_Schreiben()
Local $Werte[4] = [$Strom,$Solar,$Gas,$Wasser]
_ExcelWriteArray($oExcel,2,1,$Werte)
EndFunc
#edit: problem gefunden, er hatt immer das gesamte label mit "Datum: " ausgelesen