Kann mich nur anschliessen, sau geil gemacht.
Beiträge von AltairKD
-
-
wurde gesagt
, aber das mit den ändern sollte net xD, also bitte ändern nachdem ersten start da es sonst immerwieder sagt bitte neues PW geben. 
-
Hi zusammen, habe vorgestern angefangen mit AutoIT zu programmieren (vorher hatte ich 2Monate C++ und C# gemacht) die waren mir aber zu Komplex und ich wollte erstmal hiermit anfangen.
Habe gestern einen Terminkalender programmiert (mit bischen beihilfe von SEuBo) den ich euch hier mal vorstellen will.
Der ganze Terminkalender ist Passwortgeschütz und noch net ganz fertig.
Das standard-Passwort ist "12345".
Werde hier einfach mal den Code posten und ihr könnt dann ja mal reinschauen.
[autoit]#include <Array.au3>
[/autoit][autoit][/autoit][autoit]
#include <GuiListView.au3>
$input = InputBox("Passwort eingeben", "Bitte geben Sie das Passwort ein", "", "*")
If $input <> IniRead(@ScriptDir & "\config.ini", "data", "passwort", "12345") Then
Exit MsgBox(0, "", "Falsches Passwort")
Else
If $input = "12345" Then
$neup = InputBox("Neues Passwort", "Bitte geben Sie ein neues Passwort ein", "", "*")
IniWrite(@ScriptDir & "\config.ini", "data", "passwort", $neup)
EndIf
EndIf
Opt("TrayMenuMode", 1)
TraySetClick(16)
$hMax = TrayCreateItem("Anzeigen")
$hGhost = TrayCreateItem("Verstecken")
TrayCreateItem("")
$hTray = TrayCreateItem("Schliessen")
$SEC = @SEC
$GUI = GUICreate("Terminkalender", 440, 400)
GUISetBkColor(0xFACBAFF)
$ccal = GUICtrlCreateMonthCal("Kalender", 20, 225, 400, 160)
GUISetState()
;~ Liste für termine
$cListView = GUICtrlCreateListView("Termin|Beschreibung|Datum|Uhrzeit", 20, 30, 400, 150)
$hListView = GUICtrlGetHandle($cListView)
_GUICtrlListView_SetColumnWidth($hListView, 1, 175) ; für Beschreibung abstand
_GUICtrlListView_SetColumnWidth($hListView, 0, 100) ; für Termin abstand
;~ Buttons
$cNeu = GUICtrlCreateButton("Neu", 20, 2, 100, 20)
$csave = GUICtrlCreateButton("Speichern", 220, 2, 100, 20)
$load = GUICtrlCreateButton("Laden", 120, 2, 100, 20)
$cLoeschen = GUICtrlCreateButton("Löschen", 320, 2, 100, 20)
$such = GUICtrlCreateInput("", 20, 185, 200, 30)
$suchGo = GUICtrlCreateButton("Suchen", 240, 185, 100, 30)
$uhr = GUICtrlCreateLabel(@HOUR & ":" & @MIN & ":" & @SEC, 360, 185, 50, 20)
;~ Contextmenü
$contextmenu = GUICtrlCreateContextMenu($cListView)
$iNeu = GUICtrlCreateMenu("Neu", $contextmenu)
$iDel = GUICtrlCreateMenuItem("Löschen", $contextmenu)
$iEin = GUICtrlCreateMenuItem("Eintrag", $iNeu)While 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg() ; Fragt ab, was auf der GUI passiert, und speichert das in $nMSg
Switch $nMsg ; Welchen Wert hat $nMSg grade?
Case -3 ; $nMsg = -3 [also das X oben rechts]
Exit
Case $cNeu, $iEin
$sInput = InputBox("Neuer Termin", "Bitte Termin eingeben:")
$sbeschreibung = InputBox("Neuer Eintrag:", "Bitte geben Sie die Beschreibung ein!")
$suhrzeit = InputBox("Neuer Eintrag:", "Bitte geben Sie die Uhrzeit ein!")
$sdatum = InputBox("Neuer Eintrag:", "Bitte geben Sie das Datum ein!")
GUICtrlCreateListViewItem($sInput & "|" & $sbeschreibung & "|" & $sdatum & "|" & $suhrzeit, $cListView)
Case $csave
$PathSave = FileSaveDialog("Speichern unter", @DesktopDir, "Textdateien (*.txt)")
If StringRight($PathSave, 4) <> ".txt" Then $PathSave &= ".txt"
$aArrayListView = _ListViewToArray()
_FileWriteFromArray2D($PathSave, $aArrayListView)
Case $load
$PathLoad = FileOpenDialog("Datei öffnen", @DesktopDir, "Textdateien (*.txt)")
Local $ARRAY
_FileReadToArray2D($PathLoad, $ARRAY, "|")
_ArrayDelete($ARRAY, 0)
_GUICtrlListView_AddArray($hListView, $ARRAY)
Case $cLoeschen, $iDel
_GUICtrlListView_DeleteItemsSelected($hListView)
Case $suchGo, $such
$suchterm = GUICtrlRead($such)
$gefunden = _GUICtrlListView_FindInText($hListView, $suchterm)
_GUICtrlListView_ClickItem($hListView, $gefunden)
EndSwitch
$TrayMessage = TrayGetMsg()
Switch $TrayMessage
Case $hTray
Exit
EndSwitch
If @SEC <> $SEC Then
$SEC = @SEC
GUICtrlSetData($uhr, @HOUR & ":" & @MIN & ":" & @SEC)
EndIf
WEndFunc _ListViewToArray()
[/autoit]
Local $iCnt = _GUICtrlListView_GetItemCount($hListView) ; Anzahl der Zeilen auslesen.
If $iCnt < 1 Then Return SetError(1) ; Falls kein Eintrag, dann Funktion verlassen.
Dim $aRet[$iCnt][4] ; Array erstellen. Mit genauso vielen Zeilen wie die Listview einträge hat, und 4 Spalten (termin, beschreibung usw)
For $i = 0 To $iCnt - 1 ; Alle Elemente der Listview in einer For-Next Schleife durchgehen. Wir starten bei 0 (erste Zeile) und hören bei $iCnt-1 auf. (icnt ist ja die anzahl der Zeilen. -1 müssen wir machen, weil die Zeilen ja bei 0 beginnen, und nicht bei 1)
$aRet[$i][0] = _GUICtrlListView_GetItemText($hListView, $i, 0) ; Kannst dir ja denken
$aRet[$i][1] = _GUICtrlListView_GetItemText($hListView, $i, 1)
$aRet[$i][2] = _GUICtrlListView_GetItemText($hListView, $i, 2)
$aRet[$i][3] = _GUICtrlListView_GetItemText($hListView, $i, 3)
Next
Return $aRet ; Array zurückgeben, damit wir den in Zeile 33 in eine Variable speichern können.
EndFunc ;==>_ListViewToArray
;==========================================================================================================================================
; Function: _FileWriteFromArray2D($FILEPATH, $ARRAY [, $iROWstart=0 [, $iROWend=0 [, $iCOLstart=0 [, $iCOLend=0 [, $DELIM='|']]]]])
;
; Description: Write 1D/2D array to file, 2D with delimiter between every entry
;
; Parameter(s): $FILEPATH - path/filename of the file to be write
; $ARRAY - array to write from
; optional $iROWstart - start row-index, default 0
; optional $iROWend - end row-index, default Ubound(array)-1
; optional $iCOLstart - start column-index, default 0
; optional $iCOLend - end column-index, default Ubound(array,2)-1
; optional $DELIM - delimiter for 2D-array entries, default '|'
;
; Requirement(s): None
;
; Return Value(s): On Success - Returns -1
; On Failure - Returns 0 and sets @error = 1 (given array is'nt array); @error = 2 (unable to open filepath)
;
; Note: If $iROWstart > $iROWend or $iCOLstart > $iCOLend the values will be swapped among
;
; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
;==========================================================================================================================================
Func _FileWriteFromArray2D($FILEPATH, $ARRAY, $iROWstart = 0, $iROWend = 0, $iCOLstart = 0, $iCOLend = 0, $DELIM = '|')
If Not IsArray($ARRAY) Then
SetError(1)
Return 0
EndIf
Local $Ubound = UBound($ARRAY)
If $iROWend = 0 Then $iROWend = $Ubound - 1
Local $fh = FileOpen($FILEPATH, 2)
If $fh = -1 Then
SetError(2)
Return 0
EndIf
Select
Case $iROWstart < 0 Or $iROWstart > $Ubound - 1
$iROWstart = 0
ContinueCase
Case $iROWend < 0 Or $iROWend > $Ubound - 1
$iROWend = $Ubound - 1
ContinueCase
Case $iROWstart > $iROWend
$tmp = $iROWstart
$iROWstart = $iROWend
$iROWend = $tmp
EndSelect
Local $Ubound2nd = UBound($ARRAY, 2)
If @error = 2 Then
For $i = $iROWstart To $iROWend
FileWriteLine($fh, $ARRAY[$i])
Next
Else
If $iCOLend = 0 Then $iCOLend = $Ubound2nd - 1
Select
Case $iCOLstart < 0 Or $iCOLstart > $Ubound2nd - 1
$iCOLstart = 0
ContinueCase
Case $iCOLend < 0 Or $iCOLend > $Ubound2nd - 1
$iCOLend = $Ubound2nd - 1
ContinueCase
Case $iCOLstart > $iCOLend
$tmp = $iCOLstart
$iCOLstart = $iCOLend
$iCOLend = $tmp
EndSelect
For $i = $iROWstart To $iROWend
$tmp = ''
For $k = $iCOLstart To $iCOLend
If $k < $iCOLend Then
$tmp &= $ARRAY[$i][$k] & $DELIM
Else
$tmp &= $ARRAY[$i][$k]
EndIf
Next
FileWriteLine($fh, $tmp)
Next
EndIf
FileClose($fh)
Return -1
EndFunc ;==>_FileWriteFromArray2D
;==========================================================================================================================================
; Function: _FileReadToArray2D($FILEPATH, $ARRAY [, $DELIM=-1])
;
; Description: Read 1D/2D array from file, if $DELIM is given (<> -1) 2D array will created
;
; Parameter(s): $FILEPATH - path/filename of the file to read in an array
; $ARRAY - array variable to hold readed data
; optional $DELIM - delimiter for 2D-array entries, default -1 (none 2D-array)
;
; Requirement(s): None
;
; Return Value(s): On Success - Returns -1
; On Failure - Returns 0 and sets @error = 1 (given file are not seperated with given delimiter or count of delimiters
; are not equal); @error = 2 (unable to open filepath)
;
; Note: If given file is delimited to create 2D-array ALL lines need the same count of delimiters, otherwise an error occurs!
;
; Author(s): BugFix ( [email='bugfix@autoit.de'][/email] )
;==========================================================================================================================================
Func _FileReadToArray2D($FILEPATH, ByRef $ARRAY, $DELIM = -1)
Local $fh = FileOpen($FILEPATH, 0), $line, $var, $n = 1
If $fh = -1 Then
SetError(2)
Return 0
EndIf
If $DELIM <> -1 Then
$line = FileReadLine($fh, 1)
$var = StringSplit($line, $DELIM)
If IsArray($var) Then
$Ubound2nd = $var[0]
Local $AR[1][$Ubound2nd]
$AR[0][0] = 0
Else
SetError(1)
Return 0
EndIf
While 1
$line = FileReadLine($fh, $n)
If @error = -1 Then ExitLoop
$var = StringSplit($line, $DELIM)
If IsArray($var) Then
ReDim $AR[UBound($AR) + 1][$Ubound2nd]
For $i = 0 To $Ubound2nd - 1
$AR[UBound($AR) - 1][$i] = $var[$i + 1]
Next
$AR[0][0] += 1
Else
SetError(1)
Return 0
EndIf
$n += 1
WEnd
Else
Local $AR[1]
$AR[0] = 0
While 1
$line = FileReadLine($fh, $n)
If @error = -1 Then ExitLoop
ReDim $AR[UBound($AR) + 1]
$AR[UBound($AR) - 1] = $line
$AR[0] += 1
$n += 1
WEnd
EndIf
FileClose($fh)
$ARRAY = $AR
Return -1
EndFunc ;==>_FileReadToArray2D -
Autostart würde nix bringen da er erst starten kann wenn explorer.exe und sowas schon alles da ist, also sieht man vorher den bildschirm ja auch schon. (denke mal ist nicht gewünscht)
Als Dienst ist ne gute idee da kann man ja i.wie sagen wann der Dienst starten soll.
-
Das Datum kann man ja notfalls noch in der Beschreibung mit einfügen, ich hab das nur mit Uhrzeit gemacht, da ich es e nur für einen Tag speichre.Deswegen würde ich das mit den Datum wirklich noch einbauen, damit man es auch länger als nur ein Tag speichern kann. Habe es mir selber aber leider noch net angucken können da ich noch auf der Arbeit bin, werde es aber heute mittag mal machen und dann mal meinen Eindruck hierlassen. =)
-
Ja das im Spoiler ist Richtig habe es so grade auch mal getestet.
Schon ganz nett, aber auch noch ausbaufähig an manchen stellen. Namen kann mann zb. leider nur komplett finden wenn ich also Klaus Bauer eingetragen habe aber nur nach Bauer suche findet er nix. Aber sonst schon gut.
-
Hi,
schon ganz cooles teil, allerdings würde ich das mit den Minimieren und schliessen bischen was anders machen, mehr mit Buttons oder einen Context menü.Werde mir bei mehr zeit mal den code genauer angucken vllt. kann ich ja noch was ändern ;).
-
Wäre ein anfang. Insgesamt wundert es mich das es soviel frisst, sollte ja auch bei den 512MB Vista Rechner vom Kollegen gut laufen und nicht so laam(habs Live gesehen). Trotzdem schon sehr cool.