Na das muss ich ja gleich mal die Tage testen! Daumen hoch!
Gesendet von iPhone mit Tapatalk
Na das muss ich ja gleich mal die Tage testen! Daumen hoch!
Gesendet von iPhone mit Tapatalk
Daumen hoch @Cape-City,
ich finde grundsätzlich schön, dass du ein Video zu AutoIt gemacht hast. Es gefällt mir von der Aufmachung mit Intro usw. als kurzes Vorstellungsvideo von AutoIt. Aus meiner Sincht ist es eine gute Ergänzung zu den Tutorialreihen auf Youtube.
Danke Dir, dann hoffe ich doch, das Du auch einen Dumen hoch auf Youtube gelassen hast
Das ist der Song und das ist kein Techno. Dubstep würde ich jetzt nicht zu 100% sagen. Das ist eher dieser neumodische EDM-Schnickschnack.
Cool, meine Tracklist in der Videobeschreibung bringt was Wobei ich diesen Song aus der YouTube Audio-Bibliothek habe.
Ich finde den Übergang sehr übereilt, gleich im Anschluss zu SciTE die Auswahl von ISN AutoIt Studio zu beschreiben und mit einem Jump & Run Spiel Level wertvolle Zeit zu vertrödeln.
Automatisierung von nützlichen Abläufen und Infobeschaffung (Systeminfos usw.) im Alltag eine Systemadmins (ein paar einfache Beispiele).
Erstellen einer einfachen GUI, für den Start von Internet Favouriten oder eigen programmierter Software.
Danke, das sind doch schon einige Ideen für ein weiteres Video Der krasse Sprung zur Mario Umsetzung war der Idee geschuldet, das man mit der Eingangs erwähnten, simplen Skriptsprache,
dennoch hochkomplexe Anwendungen schreiben kann und was eignet sich da besser als so ein Spiel. Klar bin ich auch immer wieder begeistern vom ISN AutoIt Studio und kann das auch immer
nicht fassen, das es selbst in AutoIt geschrieben wurde, aber das ist selbst für mich nicht so greifbar.
Ich habe zumindestens bei "Edit: Bei 0:13-0:28" so einen ugaugaugaugaugabummbumm in den Ohren gehabt.
Dein UgaUgaUgaUgaBummBumm sind DubStep Elemente.
Vielleicht hättest du ein paar vergleiche mit anderen sprachen machen können, die unterschiede klar stellen & dessen eventuelle vorteile.
Danke, das ist doch auch eine nette Idee für ein weiteres Video, welches allerdings noch tiefere Recherche verlangt, zu mal ich mich mit den anderen Programmiersprachen
so gar nicht auskenne, aber da sollte man ja schon irgendwo Hilfe bekommen
Musst jetzt nicht alles perfekt und genau richtig haben. Ich wollte es nur gesagt haben da normalerweise von Calltips geredet wird und ich Lookahead so gut wie nie lese.
Das ist sehr schön gesagt! Wenn man aber keine Kritik annimmt, wie soll man sich denn dann verbessern? Ich konnte es leider nur in den deutschen Untertiteln hinzufügen, da die Anmerkungen unter Youtube nicht funktionieren, wenn man bereits einen Abspann einblenden lässt...wie doof ist das denn?
Danke
Naja, es ist gar nicht so einfach, so etwas einzusprechen, ohne sich selber dabei doof vorzukommen, aber auch hier kann ich mich nur weiter entwickeln
Was die Calltips angeht, kenne ich sie halt in anderen Zusammenhängen als LookAhead Funktion. Mal schauen ob man nachträglich noch einen Text einblenden kann.
Hi,
das war ganz sicher nicht meine Intention Scriptkiddies in dieses Forum zu "locken", sondern ich wollte hervorheben, für wieviel mehr AutoIt in der Lage ist und halt nicht nur
für Bot-Krams und Co. Davon findet man leider extrem viel auf YouTube und das tut AutoIt einfach unrecht und das Problem mit den AV Produkten, ist nunmal ja auch nicht von
der Hand zu weisen.
Ich fasse es trotzdem als Lob mit Kritik auf - Luft nach oben, um Dinge besser zu machen muss ja da sein!
Hi @all,
ich habe meine Begeisterung über AutoIt in einem kleinen YouTube Video zum Ausdruck gebracht.
https://www.youtube.com/watch?v=nJW-cash1hQ
Ich hoffe das ich dem Potential, welches in dieser Software und der Community drum rum steck, ansatzweise gerecht werde.
Vorschläge für weitere Episoden, Vorstellungen von anderen, in AutoIt geschriebenen, Programmen nehme ich gerne entgegen
und wenn genug Material vorhanden ist, kann ich gerne ein weiteres Video machen.
Hi @all,
ich habe eine ganze Weile weiter gewerkelt, Bugs entfernt, Dinge verbessert, neue Ideen umgesetzt. Hier mal wieder ein Zwischenstand.
Neue Version online (Thread 1 wurde aktualisiert).
@Cape-City kennst du ternäre Operatoren? Die lassen sich in deinem Beispiel hervorragend anwenden und man spart dadurch 4 Zeilen.
Statt zwei If-Zweige hinzuschreiben kann man das ganze auch so hinschreiben (verfügbar ab 3.3.10.2 glaube ich):
Werde ich mir mal anschauen, ich denke das ich das auch in einigen meiner Scripte unterbringen kann
Hi,
die hast ja folgenden Part weggelassen:
Welcher vor dem EndFunc in der _ProgressProc Funktion stand (laut Hilfe). Deine Funktion wird einmal aufgerufen, es wird aber kein Wert zurück gegeben, in diesem Fall wenn '1B' = ESC nicht
gedrückt wurde immer noch der Wert $PROGRESS_CONTINUE.
Wobei es dann selbst dann mit dem Beispiel funktioniert....also auch Dein Beispiel funktioniert bei mir. Ich habe eine 3GB grosse Datei kopiert, alles super.
Welche AutoIt Version setzt Du ein?
Gesucht, gefunden und mal wieder neu belebt. Ich finde es auch immer wieder interessant, wie man zu seinem Nickname kommt.
Ich habe meinen schon seit Ewigkeiten, damit in Berührung gekommen bin ich 1985, wo ich das erste mal mit Computern (8086er) zu tun hatte,
im Zuge einer Computer AG in der 5. Klasse. Allerdings war es da noch nicht meiner, sondern von einem älteren Mitschüler, welcher sich damit
brüstete, den coolsten Nicknamen überhaupt zu haben und auch voll die große Nummer im Computerbereich wär. Ich meine im privaten auf
meinem Commodore C16 habe ich ihn danach bereits verwendet, aber nur für mich. Ich müsste mal die alten Unterlagen sichten *NOSTALGIE*
Als ich dann Jahre später mit einem Kumpel in der C64 HomeComputer Ära aktiv war, ich bis dato aber nichts weiter von dem "sagenumwobenen" Cape-City
gehört hatte, habe ich mich seiner komplett angenommen. Ich denke das erste mal habe ich ihn 1987/88 benutzt, als wir "ganz kurz" auf die dunkle Seite der
C64 Computer Szene gewechselt hatten
Während der 9/10 Klasse 89/90 wiederrum in einer weiteren Computer AG (80286er), gab es dann die ersten Sachen auf der hellen Seite mit diesem Nick.
Ich war es auch, der diesen Nick ins Internet gebracht hat, das ist zwischen 93-97 während meiner Ausbildung gewesen. Da hatte sich der Nick aber schon komplett
manifestiert und jedes Programm hatte dieses Stempel drauf.
Mittlerweile ist er zu einer 2. Identität geworden, mit eigener Mailadresse und allem. Wenn ich irgendwo mal wirklich anonym sein will, dann
nutze ich ihn sogar gar nicht, sondern habe eine Reihe anderer Pseudo Nicks, aber dieser hier bin ICH und werde immer ICH bleiben
Abgewandelte Formen, ab und zu ist er tatsächlich bereits vergeben *FRECHHEIT* , sind:
LeCapeCity
CapeCity
Cape_City
CaPe-CiTy (<- da hatte das Forum tatsächlich Groß- und Kleinschreibung unterschieden)
Alles anzeigenHallo,
Natürlich ginge Aufgabenplanung. Aber ich möchte ebbend nicht mehr dran denken, wenn ich was ändern sollte auch dort was zu Überprüfen.
Ich habe meine ersten Sachen 2008 in Autoit geschrieben und dann läuft es Jahre und dann soll ich mal ebbend was ändern.
So finde ich es gleich wieder.
Ich habe mal den Ansatz von @autoiter angenommen.
Die Global Sachen stehen natürlich Außerhalb.
Klar könnte ich es noch in eine Funktion auslagern.
So läuft die Aufräum Aktion 1 x am Tag.Ich kann bei meinen Variablen die Start-Stunde festlegen.
Wie gefällt Euch dies ?
AutoIt Alles anzeigenGlobal $iAUFRAEUMEN_STUNDE = 19 Global $iWHILE = 1 While Sleep(3 * 1000) _Datenbekommen() _Verschieben() _Umbennen() Local $iZEIT_START = @HOUR Local $iZEIT_STOP = $iAUFRAEUMEN_STUNDE - 1 If $iZEIT_STOP = $iZEIT_START Then $iAUFRAEUMEN_STUNDE += 1 EndIf If $iZEIT_START = $iAUFRAEUMEN_STUNDE Then _aelter_loeschen() _verschieben_aelter() $iAUFRAEUMEN_STUNDE -= 1 EndIf If Mod($iWHILE, 100) = 0 Then $iWHILE = 1 _PDFMerge() EndIf $iWHILE += 1 WEnd
Hi,
zum einen werden die beiden Local innerhalb der While-Schleife beim 2. Durchlauf meckern, da sie bereits definiert wurden (die Schleife wird ja nicht verlassen) und zum anderen ich finde ich das Script sehr verwirrend, wann es wirklich was macht. Es gibt die $iAUFRAEUMEN_STUNDE, welche mit dem Wert 19 startet. Immer mal wieder ein runtergezählt wird, dann wieder eins hoch. Alles sehr verwirrend und selbst wenn Du jetzt genau weisst das da passiert, weisst Du es bestimmt in einem halben Jahr nicht mehr und brauchst ewig den Sinn wieder zu verstehen. Ich versuche meine Programme nach dem Prinzip KISS zu schreiben: Keep It Smart & Simple oder wie Oma früher schon immer gesagt hat: Weniger ist oft mehr
Ich habe die Code-Tags verwendet, auch mal gelöscht und neu angelegt. Will einfach nicht mehr in dem Post....
Quelltext ist auch auf dem neusten Stand, schon krass das ich immer wieder kleinere Bugs finde
Hey
Deine Idee sollte eigentlich fast funktionieren, ein Problem könnte aber auf jeden Fall sein, dass du im ElseIf die Bedingung < 10 genommen hast, in der If Bedingung aber > 10. Das würde bedeuten, dass du bis 10 hochaddierst, danach aber weder auf 0 resettest noch auf 11 kommst um die If Bedingung > 10 aus zu lösen. Versuche es einfach mal mit = 10 in deiner ersten If Bedingung.Frohes Fest
Ich denke damit kam er nie in den If-Bereich, denn sein Script hat nur bis 10 gezählt, das war aber noch zu klein für die If-Abfrag und schon zu groß für die ElseIf
Hi,
ist doch ein gangbarer Weg, allerdings hast Du Syntaxfehler in Deinem Script:
Global $i = 0
While Sleep(1000)
If $i = 10 Then
_aelter_loeschen()
_verschieben_aelter()
$i = 0
ElseIf $i < 10 Then
;~ Else
_Datenbekommen()
_Verschieben()
_Umbennen()
_PDFMerge()
$i += 1
EndIf
WEnd
Alles anzeigen
Allerdings wird der untere Teil dann nach 10 Durchläufen auch 1 mal nicht ausgeführt. Stattdessen nur der obere Teil. War das denn so geplant?
Ansonsten könnte man es auch so umstricken:
Uuumpffff
Ja, das Script bedarf noch etlicher Aufräumarbeit, aber da ich mittlerweile soviel geändert hatte, wollte ich den Charme des
Originals noch etwas durchblicken lassen
Im ersten Schritt wollte ich eigentlich das Script nur in eine logische Reihenfolge bringen und einige Variablen sinnvoller umbenennen.
Der Versuche mit MenuItem10/11/12/.../20/21... war eine logische Zusammenfassung, des Hauptmenüpunktes und der darunter liegenden
Unterpunkte. Auch der Start mit der direkten Abfrage was man machen möchte gefällt mir noch nicht, aber vorher ging das Programm auf
und man musste dann erst abspeichern um etwas Dauerhaftes zu haben.
Es steckt noch viel Potential darin, selbst in so einem banalen Programm. Stolz bin ich aber auf die Verschachtelungen mit den ForNext
Schleifen, welche zum einen die GUI dynamisch aufbauen/füllen und zum Anderen auch die OnEvents setzen. Vorher war es ja mehr oder
weniger eine Batch-Datei.
Allerdings hat mir das System gezeigt, das es nicht überall gleich reagiert. So habe ich ja beim GUI Aufbau, den $Tag[0] bzw. $Stunde[0] als
Zähler für meine ForNext-Schleife verwendet. Sieht im Nachhinnein zwar blöd aus $Tag[$Tag[0]], aber das Arrayfeld war eh da und ich wollte
mit 1-5 bzw. 1-8 arbeiten um einen besseren Bezug zu Mo-Fr und 1h-8h zu bekommen. Ich werde das aber auch noch umbauen.
Das mit den Variablennamen $aTag oder $iDay habe ich allerdings noch nicht zu ganz verstanden, warum man das macht, bzw. was es einem
damit erleichtert.
So...ich werde dann nochmal ein wenig strippen und strecken
Nachtrag 22.12.16:
Vorherigen Thread den Code aktualisiert.
Berufsbedingt habe ich etliche Rechner unterschiedlichster Couleur unter mir, wo ich gerne Testscripte laufen lassen kann.
Nettes Programm, sicherlich sehr hilfreich wenn meine Jungs in die Schule kommen.
Ich habe es mal etwas umgestrickt, verschlankt, verbessert, verändert...
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Stundenplaner.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Comment=Stundenplaner
#AutoIt3Wrapper_Res_Description=Stundenplaner
#AutoIt3Wrapper_Res_Fileversion=1.2.6.0
#AutoIt3Wrapper_Res_LegalCopyright=© 2016 by bingbongman
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
AutoIt Version: 3.3.14.2
Author: bingbongman (Brandt, Tobias)
Modified: Cape-City
Script Name: Stundenplaner.au3 - Copyright 2016
Script Function: Stundenplaner
Created with ISN AutoIt Studio v. 1.03
#ce ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;
; Ungarische Notation (weitestgehend): $aX = Array, $cX = Counter, $hX = Handle, $iX = Integer, $pX = Pointer, $sX = String, ..., $ah_X = Array/Handle
;
#include <GUIConstants.au3>
#include <GuiStatusBar.au3>
#include <MsgBoxConstants.au3>
Opt("GUIOnEventMode", 1)
Global $iAnswer, $iDay, $iHour, $sINIFile, $sConfigFile = @ScriptDir & "\Config.ini", $sSaveFileName, $sHeaderText
Global $sVersion = "V1.2.6.0", $sLastEdit = "22.12.2016"
Global $sCreated = "Tobias Brandt", $sModified = "Cape-City", $sMailTo = "tobi.brandt@gmx.net", $sForumURL = "https://autoit.de/index.php/Thread/11622-Stundenplaner/?pageNo=1"
Global $aWochentag[6] = ["", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag"]
Global $aWochentagXPos[3] = ["54", "145", ""] ;==> [0]StartXPos, [1]X-Abstand, [2]Addierer
Global $aStunde[9] = ["", "Erste", "Zweite", "Dritte", "Vierte", "Fuenfte", "Sechste", "Siebte", "Achte"]
Global $aStundeYPos[3] = ["115", "38", ""] ;==> [0]StartXPos, [1]Y-Abstand, [2]Addierer
Global $iGUI_Width = 780, $iGUI_Height = 475
; Stundenplan GUI ######################################################################################################
Local $hStundenplaner = GUICreate ("Stundenplaner " & $sVersion & " - created by " & $sCreated & ", modified by " & _
$sModified, $iGUI_Width, $iGUI_Height, -1, -1)
GuiSetonEvent ($GUI_EVENT_CLOSE, "_GUI_GetMsg")
GUISetBkColor(0xBFCDDB)
; ######################################################################################################################
; Header Create Label und SetOnEvent ###################################################################################
Global $hHeader = GUICtrlCreateLabel ("", 0, 15, $iGUI_Width, 37, $SS_CENTER)
GUICtrlSetFont (-1, 18, 800, 0, "Arial Black")
GUICtrlSetBkColor(-1, 0xAACDAB)
GuiCtrlSetonEvent (-1, "_GUI_GetMsg")
; ######################################################################################################################
; Stunden Zeilen / Wochentage Spalten / INI Read und SetOnEvent ########################################################
Global $ah_TagStunde[9][9]
$aWochentagXPos[2] = $aWochentagXPos[0]
For $iDay = 0 To 5
$aStundeYPos[2] = $aStundeYPos[0]
For $iHour = 1 To 8
If $iDay = 0 Then
; Stunden Zeilen ###########################################################################################
GUICtrlCreateLabel ($iHour & ".", 7, $aStundeYPos[2], 30, 30, BitOR ($SS_CENTER, $SS_CENTERIMAGE), $WS_EX_DLGMODALFRAME)
GUICtrlSetFont (-1, 12, 800, 0, "Arial Black")
GUICtrlSetBkColor(-1, 0xE3E3E3)
; ##########################################################################################################
Else
; Wochentage Spalten #######################################################################################
GUICtrlCreateLabel ($aWochentag[$iDay], $aWochentagXPos[2], 75, 120, 30, BitOR ($SS_CENTER, $SS_CENTERIMAGE), $WS_EX_DLGMODALFRAME)
GUICtrlSetFont (-1, 12, 800, 0, "Arial Black")
GUICtrlSetBkColor (-1, 0xE3E3E3)
; ##########################################################################################################
; Unterrichtsfächer ########################################################################################
$ah_TagStunde[$iDay][$iHour] = GUICtrlCreateLabel ("", $aWochentagXPos[2], $aStundeYPos[2], 120, 30, BitOR ($SS_CENTER, $SS_CENTERIMAGE), $WS_EX_DLGMODALFRAME)
GUICtrlSetFont (-1, 9, 800, 0, "Arial")
GUICtrlSetBkColor(-1, 0xE3E3E3)
GuiCtrlSetonEvent (-1, "_GUI_GetMsg")
; ##########################################################################################################
EndIf
$aStundeYPos[2] += $aStundeYPos[1]
Next
If $iDay > 0 Then $aWochentagXPos[2] += $aWochentagXPos[1]
Next
; ######################################################################################################################
; GUI Create MenuItem und SetOnEvent ###################################################################################
Global $aMenuItem_File = GUICtrlCreateMenu ("&Datei")
Global $aMenuItem_File_New = GUICtrlCreateMenuItem ("Neu", $aMenuItem_File)
GuiCtrlSetonEvent (-1, "FileChangedDialog")
Global $aMenuItem_File_Open = GUICtrlCreateMenuItem ("Öffnen", $aMenuItem_File)
GuiCtrlSetonEvent (-1, "FileChangedDialog")
Global $aMenuItem_File_SaveAs = GUICtrlCreateMenuItem ("Speichern unter...", $aMenuItem_File)
GuiCtrlSetonEvent (-1, "SaveAs")
Global $aMenuItem_File_Exit = GUICtrlCreateMenuItem ("Beenden", $aMenuItem_File)
GuiCtrlSetonEvent (-1, "Cancel")
Global $aMenuItem_Questionmark = GUICtrlCreateMenu ("&?")
Global $aMenuItem_Questionmark_About = GUICtrlCreateMenuItem ("Über", $aMenuItem_Questionmark)
GuiCtrlSetonEvent (-1, "About")
Global $aMenuItem_Questionmark_Help = GUICtrlCreateMenuItem ("Hilfe", $aMenuItem_Questionmark)
GuiCtrlSetonEvent (-1, "Help")
; ######################################################################################################################
; Footer Create Label ##################################################################################################
Global $hFooter = GUICtrlCreateLabel ($sINIFile, 6, $iGUI_Height - 45, $iGUI_Width, 37)
GUICtrlSetFont (-1, 10, 800, 0, "Arial")
; ######################################################################################################################
; Letzten offenen Stundenplan öffnen oder neuen Temporären erstellen ###################################################
Global $sTempFile = @ScriptDir & "\~stdplnr0.tmp"
LastOpened()
; ######################################################################################################################
GUISetState (@SW_SHOW)
While 1
Sleep(500)
WEnd
; ######################################################################################################################
; Funktionen ###########################################################################################################
; ######################################################################################################################
; Cancel ###############################################################################################################
Func Cancel()
If Not FileExists ($sConfigFile) Then
$sSaveFileName = FileOpen ($sConfigFile, BitOR ($FO_OVERWRITE, $FO_CREATEPATH))
;~ If $sSaveFileName = -1 Then CreateConfigError()
FileWrite ($sSaveFileName, "[Config]" & @CRLF & "LastOpened =")
FileClose ($sSaveFileName)
EndIf
IniWrite ($sConfigFile, "Config", "LastOpened", " '" & $sINIFile & "'")
If $sINIFile <> $sTempFile Then FileDelete ($sTempFile)
$iAnswer = MsgBox (262208, "Stundenplaner", "Auf Wiedersehen!", 3)
Exit
EndFunc
; ######################################################################################################################
; LastOpened ###########################################################################################################
Func LastOpened()
$sINIFile = IniRead ($sConfigFile, "Config", "LastOpened", "Error")
If $sINIFile = "Error" Or Not FileExists ($sINIFile) Then CreateNew()
If $sINIFile <> $sTempFile Then FileDelete ($sTempFile)
GUIPush()
EndFunc
; ######################################################################################################################
; FileChangedDialog ####################################################################################################
Func FileChangedDialog()
If $sINIFile = $sTempFile Then
$iAnswer = MsgBox (262179, "Stundenplaner", "Möchten Sie die Änderungen an " & $sHeaderText & @CRLF & "speichern?", 0)
Switch $iAnswer
Case $IDYES, $IDNO
If $iAnswer = $IDYES Then SaveAs()
If @GUI_CtrlId = $aMenuItem_File_New Then CreateNew(True)
If @GUI_CtrlId = $aMenuItem_File_Open Then OpenFile()
Case $IDCANCEL, $IDTIMEOUT
EndSwitch
Else
If @GUI_CtrlId = $aMenuItem_File_New Then CreateNew(True)
If @GUI_CtrlId = $aMenuItem_File_Open Then OpenFile()
EndIf
If $sINIFile <> $sTempFile Then FileDelete ($sTempFile)
EndFunc
; ######################################################################################################################
; OpenFile and Error ###################################################################################################
Func OpenFile()
$sINILoadFile = FileOpenDialog ("Öffnen", "Stundenplaner", "Ini Dateien (*ini)", 1 + 2)
If @error And $sINIFile = "" Then OpenError()
If Not @error Then $sINIFile = $sINILoadFile
GUIPush()
EndFunc
Func OpenFileError()
$iAnswer = MsgBox (262192, "Stundenplaner", "Der Stundenplan konnte nicht geladen werden!" & @CRLF & _
"Programm wird jetzt beendet!", 5)
Exit
EndFunc
; ######################################################################################################################
; SaveAs and Error #####################################################################################################
Func SaveAs()
Local $sSelectFileName = FileSaveDialog ("Speichern unter...", @ScriptDir, "INI Dateien (*.ini)", BitOR ($FD_PATHMUSTEXIST, $FD_PROMPTOVERWRITE))
If StringRight ($sSelectFileName, 4) <> ".ini" Then $sSelectFileName &= ".ini"
If $sSelectFileName = ".ini" Then Return
If $sINIFile = $sTempFile Then $iAnswer = FileMove ($sINIFile, $sSelectFileName, BitOR ($FC_OVERWRITE, $FC_CREATEPATH))
If $sINIFile <> $sTempFile Then $iAnswer = FileCopy ($sINIFile, $sSelectFileName, BitOR ($FC_OVERWRITE, $FC_CREATEPATH))
If Not $iAnswer Then
SaveAsError()
Return
EndIf
$sHeaderText = StringTrimRight (StringTrimLeft ($sSelectFileName, StringInStr ($sSelectFileName, "\", 0, -1)), 4)
$sINIFile = $sSelectFileName
GUIPush()
EndFunc
Func SaveAsError()
$iAnswer = MsgBox (262192, "Stundenplaner", "Der Stundenplan konnte nicht gespeichert werden!", 5)
EndFunc
; ######################################################################################################################
; CreateNew and Error ##################################################################################################
Func CreateNew($iOverwrite = False)
If $iOverwrite Or Not FileExists ($sTempFile) Then
$sHeaderText = "Neuer Stundenplan"
$sSaveFileName = FileOpen ($sTempFile, BitOR ($FO_OVERWRITE, $FO_CREATEPATH))
If $sSaveFileName = -1 Then CreateNewError()
FileWrite ($sSaveFileName, "[Header]" & @CRLF & "Header = '" & $sHeaderText & "'" & @CRLF & @CRLF)
For $iDay = 1 To 5
FileWrite ($sSaveFileName, "[" & $aWochentag[$iDay] & "]" & @CRLF)
For $iHour = 1 To 8
FileWrite ($sSaveFileName, $aStunde[$iHour] & " = " & @CRLF)
Next
Next
FileClose ($sSaveFileName)
EndIf
$sINIFile = $sTempFile
GUIPush()
EndFunc
Func CreateNewError()
$iAnswer = MsgBox (262192, "Stundenplaner", "Der Stundenplan konnte nicht erstellt werden!" & @CRLF & _
"Programm wird jetzt beendet!", 10)
Exit
EndFunc
; ######################################################################################################################
; _GUI_GetMsg ##########################################################################################################
Func _GUI_GetMsg()
Local $sInput, $sDefault
; Main Events ######################################################################################################
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Cancel()
; ##############################################################################################################
Case $GUI_EVENT_MINIMIZE
; ##############################################################################################################
Case $GUI_EVENT_RESTORE
; ##############################################################################################################
Case $hHeader
$sDefault = IniRead ($sINIFile, "Header", "Header", "Error")
$sInput = InputBox ("Titel", "Wie lautet der Name für diesen Stundenplan?", $sDefault)
If Not @error Then IniWrite ($sINIFile, "Header", "Header", " '" & $sInput & "'")
; ##############################################################################################################
EndSwitch
; ##################################################################################################################
; Label Events #####################################################################################################
For $iDay = 1 To 5
For $iHour = 1 To 8
If @GUI_CtrlId = $ah_TagStunde[$iDay][$iHour] Then
$sDefault = IniRead ($sINIFile, $aWochentag[$iDay], $aStunde[$iHour], "Error")
If $sDefault = "" Then $sDefault = "- Frei -"
$sInput = InputBox ($aStunde[$iHour] & " Stunde", "Was haben Sie " & $aWochentag[$iDay] & " in der " & $iHour & ". Stunde?", $sDefault)
If Not @error Then IniWrite ($sINIFile, $aWochentag[$iDay], $aStunde[$iHour], " '" & $sInput & "'")
EndIf
Next
Next
; ##################################################################################################################
GUIPush()
EndFunc
; ######################################################################################################################
; GUIPush ##############################################################################################################
Func GUIPush()
; Header INI Read ##################################################################################################
$sHeaderText = IniRead ($sINIFile, "Header", "Header", "Error")
GuiCtrlSetData ($hHeader, $sHeaderText)
; ##################################################################################################################
; Label INI Read ###################################################################################################
For $iDay = 1 To 5
For $iHour = 1 To 8
GUICtrlSetData ($ah_TagStunde[$iDay][$iHour], IniRead ($sINIFile, $aWochentag[$iDay], $aStunde[$iHour], "Error"))
Next
Next
; ##################################################################################################################
; Footer INI Read ##################################################################################################
GuiCtrlSetData ($hFooter, $sINIFile)
; ##################################################################################################################
EndFunc
; ######################################################################################################################
; About ################################################################################################################
Func About()
MsgBox (0 + 64, "Über", "Stundenplaner " & $sVersion & @CRLF & _
"Geschrieben von " & $sCreated & @CRLF & _
"Modifiziert von " & $sModified & @CRLF & _
"Letze Veränderung am " & $sLastEdit)
EndFunc
; ######################################################################################################################
; Help #################################################################################################################
Func Help()
MsgBox (0 + 32, "Hilfe", "Wer Fragen oder Kritik hat, schickt bitte eine Email an:" & @CRLF & _
$sMailTo & ", oder besucht das AutoIt.de Forum unter" & @CRLF & $sForumURL)
EndFunc
; ######################################################################################################################
Alles anzeigen
Hauptänderungen (und sicherlich nicht die Letzte ) :
- Abfrage beim Start ob eine INI geöffnet werden soll oder man neu beginnen möchte
- 1D und 2D Arrays für den GUI Aufbau, die OnEvent Aktionen und das wieder in die INI schreiben
- GUI wird nicht ständig neugeladen, sondern nur nach einem Event
- die Haupt-Schleife besteht nur noch aus einem Sleep (500)
- Diverse Optische Veränderungen (z.B. werden die Texte jetzt X/Y Centered im Label angezeigt)
- Default Werte auf den OnEvent Flächen
- Stundenplanname wird per Default aus dem Dateinamen extrahiert (kann aber immer noch nachträglich verändert werden)
- Werte verschwinden nicht, wenn man die Abfragebox abbricht
- geöffnete INI Datei wird unten in der GUI angezeigt
Nachtrag 22.12.16:
- Programm öffnet die letzte Datei, keine Abfrage mehr beim Starten
- Wenn die Datei noch nicht gespeichert wurde und man eine andere öffnen oder eine neue erstellen, kommt eine Nachfrage
- Code weiter aufgeräumt und versucht die Variablen sinnvoll zu benennen
Hhhmmm...er mag meinen Code nicht mehr, eigentlich sollte er ihn für AutoIt formatieren...sorry!