#include<Misc.au3>
Global $MAX_LEISTUNG, $KOSTEN_PRO_STD, $KOSTEN_BISHER ; Globale Vars.
$STARTED = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "STARTED", "") ; Auslesen des Start-Wertes
if $STARTED = "" Then ; Wenn "Start-Wert" = Nichts, dann...  --->> Ja ich weiß, man kann das mit FileExist machen^^ <<---
	_ChangeValues() ; ...Daten angeben ( s. Funktion "_ChangeValues() )
EndIf
func _ChangeValues()
	$tGui = GUICreate("Daten sammeln", 200, 100) ; GUI erzeigen
	GUICtrlCreateLabel("Cent/kWh: ", 10, 13) ; Label
	GUICtrlCreateLabel("ct", 145, 13) ; Label
	$fINPUT_CENT_PRO_KWH = GUICtrlCreateInput("", 80, 10, 60, 20) ; INPUT für  ct/kWh
	GUICtrlCreateLabel("Max. Leistung: ", 10, 43) ; Label
	GUICtrlCreateLabel("Watt", 170, 43) ; Label
	$fINPUT_MAX_WATT = GUICtrlCreateInput("", 80, 40, 80, 20) ; INPUT für den MAximalen Verbrauch ( in Watt/Stunde )
	$fBUTTON_ANGABEN = GUICtrlCreateButton("Volt/Ampere", 105, 70, 85, 20)
	$fBUTTON_OK = GUICtrlCreateButton("OK", 10, 70, 85, 20) ; OK-Button
	GUISetState() ; Anzeigen
	while 1
		$fMsg = GUIGetMsg()
		Select
			case $fMsg = -3 Or _IsPressed("1B") ; Wenn das Fenster geschlossen wird ( -3 ) oder ESC gedrückt wurde, dann...
				Exit ; ... Schließen ( exit )
			case $fMsg = $fBUTTON_OK Or _IsPressed("0D") ; Wenn OK-Button oder ENTER gedrückt wurde, dann
				$KOSTEN_PRO_STD = GUICtrlRead($fINPUT_CENT_PRO_KWH) ; Auslesen des INPUT Feldes
				$MAX_LEISTUNG = GUICtrlRead($fINPUT_MAX_WATT);                  "
				IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN_PRO_STD", $KOSTEN_PRO_STD) ; Die Kosten in ct/kWh in INI-Datei schreiben
				IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "MAX_LEISTUNG", $MAX_LEISTUNG) ; Max-Watt eintragen
				IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "STARTED", 1) ; Startwert ( s.o. ) eintragen/ändern
				if $STARTED = "" Then IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", 0) ; Die Kosten eintragen
				GUIDelete() ; GUI löschen
				Return ; "Zurück" gehen
			case $fMsg = $fBUTTON_ANGABEN
				$fVOLT = InputBox("Volt", "Bitte geben sie die Stromspannung ( Volt ) an:", 0, "", 150, 150)
				$fAMPERE = InputBox("Ampere", "Bitte geben sie die Stromstärke ( Ampere ) an:", 0, "", 150, 150)
				$fVOLT = StringReplace($fVOLT, ",", ".")
				$fAMPERE = StringReplace($fAMPERE, ",", ".")
				GUICtrlSetData($fINPUT_MAX_WATT, $fVOLT * $fAMPERE) ; Watt = Ampere * Volt
				sleep(100)
		EndSelect
	WEnd
EndFunc
$KOSTEN_PRO_STD = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN_PRO_STD", "0") ; Daten auslesen
$MAX_LEISTUNG = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "MAX_LEISTUNG", "0") ; Daten auslesen
$KOSTEN_BISHER = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", "0") ; Daten auslesen
_CreateNormalGUI()
func _CreateNormalGUI()
	$h_GUI = GUICreate("Kosten Errechner", 300, 250) ; GUI erzeugen
	;; INPUT
	$h_INPUT_READ = 24 ; Stunden/Tag
	$h_LABEL_HEAD_1 = GUICtrlCreateLabel("Bei ", 10, 13)
	$h_INPUT_STD = GUICtrlCreateInput($h_INPUT_READ, 30, 10, 25) ; INPUT für Stunden/Tag
	$h_LABEL_HEAD_2 = GUICtrlCreateLabel("/Tag", 60, 13)
	;; INPUT
	;; LABEL
	; $h_INPUT_READ = Stunden/Tag
	; $MAX_LEISTUNG = Watt verbrauch
	; $KOSTEN_PRO_STD = ct/kWh
	$h_LABEL_KOSTEN_JAHR = GUICtrlCreateLabel("Kosten pro Jahr:", 10, 43, 100, 20)
	$h_LABEL_KOSTEN_JAHR_DATA = GUICtrlCreateLabel((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) & "  €", 150, 43, 150, 20)
	$h_LABEL_KOSTEN_MONAT = GUICtrlCreateLabel("Kosten pro Monat:", 10, 63, 100, 20)
	$h_LABEL_KOSTEN_MONAT_DATA = GUICtrlCreateLabel((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12 & "  €", 150, 63, 150, 20)
	$h_LABEL_KOSTEN_TAG = GUICtrlCreateLabel("Kosten pro Tag:", 10, 83, 100, 20)
	$h_LABEL_KOSTEN_TAG_DATA = GUICtrlCreateLabel(((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12) / (365 / 12) & "  €", 150, 83, 150, 20)
	$h_LABEL_KOSTEN_STD = GUICtrlCreateLabel("Kosten pro Stunde:", 10, 103, 100, 20)
	$h_LABEL_KOSTEN_STD_DATA = GUICtrlCreateLabel((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100 & "  €", 150, 103, 150, 20)
	$h_LABEL_KOSTEN_MIN = GUICtrlCreateLabel("Kosten pro Minute:", 10, 123, 100, 20)
	$h_LABEL_KOSTEN_MIN_DATA = GUICtrlCreateLabel(((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100) / 60 & "  €", 150, 123, 150, 20)
	$h_LABEL_KOSTEN_SEC = GUICtrlCreateLabel("Kosten pro Sekunde:", 10, 143, 100, 20)
	$h_LABEL_KOSTEN_SEC_DATA = GUICtrlCreateLabel(((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60 & "  ct", 150, 143, 150, 20)
	;; LABEL
	;; COUNTER
	$h_LABEL_COUNTER_1 = GUICtrlCreateLabel("Seit dem ersten Aufruf des Programms: ", 10, 170, 200, 20)
	$h_LABEL_COUNTER_CT = GUICtrlCreateLabel($KOSTEN_BISHER & "  ct", 30, 190, 200, 20)
	$h_LABEL_COUNTER_EURO = GUICtrlCreateLabel($KOSTEN_BISHER / 100 & "  €", 30, 210, 200, 20)
	$h_COUNTER = TimerInit()
	;; COUNTER
	;; BUTTONS
	$h_BUTTON_CHANGE_VALUES = GUICtrlCreateButton("Daten ändern", 150, 10, 120, 20)
	;; BUTTONS
	GUISetState()
	while 1
		$hMSG = GUIGetMsg()
		Select
			case $hMSG = -3 Or _IsPressed("1B")
				Exit
			case GUICtrlRead($h_INPUT_STD) <> $h_INPUT_READ
				if GUICtrlRead($h_INPUT_STD) >= 25 Then GUICtrlSetData($h_INPUT_STD, 24)
				$h_INPUT_READ = GUICtrlRead($h_INPUT_STD)
				; Daten der Labels aktualisieren
				GUICtrlSetData($h_LABEL_KOSTEN_JAHR_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_MONAT_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12 & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_TAG_DATA, ((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12) / (365 / 12) & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_STD_DATA, (($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100 & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_MIN_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100) / 60 & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_SEC_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60 & "  ct")
			case TimerDiff($h_COUNTER) >= 1000
				$KOSTEN_BISHER += ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60
				GUICtrlSetData($h_LABEL_COUNTER_CT, $KOSTEN_BISHER & "  ct")
				GUICtrlSetData($h_LABEL_COUNTER_EURO, $KOSTEN_BISHER / 100 & "  €")
				IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", $KOSTEN_BISHER)
				$h_COUNTER = TimerInit()
			case $hMSG = $h_BUTTON_CHANGE_VALUES
				_ChangeValues() ; Daten neu angeben ( s.o. )
				$MAX_LEISTUNG = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN_PRO_STD", "")
				$KOSTEN_PRO_STD = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "MAX_LEISTUNG", "")
				$KOSTEN_BISHER = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", "")
				; Daten der Labels aktualisieren
				GUICtrlSetData($h_LABEL_KOSTEN_JAHR_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_MONAT_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12 & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_TAG_DATA, ((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12) / (365 / 12) & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_STD_DATA, (($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100 & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_MIN_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100) / 60 & "  €")
				GUICtrlSetData($h_LABEL_KOSTEN_SEC_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60 & "  ct")
		EndSelect
	WEnd
EndFunc