Hallo liebe AutoIt-Gemeinde,
ich benötige ein klein wenig Hilfe für ein Tool was ich mir und meinen Kollegen auf Arbeit geschrieben habe.
Die Oberfläche dient eigentlich nur dazu bestimmte interne Tickets zu kontrollieren und ggf. updates zu setzen.
Es funktioniert auch eigtlich alles. Wenn ich ein Ticket anwähle lädt er eine Textdatei (das Ticket) und gibt dieses in einem Edit Feld wieder.
Und hier genau liegt der Hund begraben. Ich möchte explizit an dieser Stelle, dass er das File erst ab der 5. Zeile komplett ausliest. Die ersten 4 Zeilen soll er hierbei ignorieren. Diese werden vorher seperat ausgelesen und in anderen Feldern ausgegeben.
Damit man versteht was ich meine hier mein Script zum testen. Wenn man den Filepath anpasst kann man das auf jedem PC testen.
Sicherlich ist mein gescriptetes Zeugs nicht perfekt, man kann einiges sicherlich besser machen. Aber so läuft es aktuell genau wie gewünscht und ich versteh meinen Code
Wäre nett wenn man mir hier auf die Sprünge hilft. Ich denke das hier evtl StringReplace zum Einsatz kommen könnte - sicher bin ich mir da auch nicht...
LG
Mirko
Edit:
Ich habe keine Ahnung warum er den Quellcode hier so unleserlich einfügt
Vor dem absenden sieht noch alles konform aus - erst nach dem Post wird es hier total verzogen
Edit 2:
Da man den Quellcode ja wirklich nicht entziffern kann hab ich mal die AU3 angehangen... damit sollte es ja jeder sehen können...
Spoiler anzeigen
#region ;**** Directives created by AutoIt3Wrapper_GUI ****#AutoIt3Wrapper_Icon=artifacter.ico#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****#include<GuiTreeView.au3>#include<EditConstants.au3>#include<GUIConstantsEx.au3>#include<TreeViewConstants.au3>#include<WindowsConstants.au3>
Global $sPath = 'M:\Agents\#CT Profis\Artifacts\'Global $width = 800, $height = 600Global $hGui = GUICreate('Artifacter', $width, $height, -1, 0)
Dim $input_infos[4]
GUICtrlSetFont(-1, 9, 600, 0, 'Verdana')Global $bFiles = TrueGUICtrlCreateGroup("Artifacts", 5, 20, 275, 505)GUICtrlSetFont(-1, 8, 600, 0, "Verdana")Global $hTreeView = GUICtrlCreateTreeView(10, 35, $width - 540, $height - 120, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES), $WS_EX_STATICEDGE)GUICtrlSetFont(-1, 10, 400, 0, 'Arial')GUICtrlSetBkColor(-1, 0xF8F8F8)$input_createfile = GUICtrlCreateInput("FILENAME", 15, 540, 150, 18)$button_createfile = GUICtrlCreateButton("Create Artifact", 170, 540, 75, 18)GUICtrlCreateGroup("Artifact Infos", 290, 20, 500, 80)GUICtrlSetFont(-1, 8, 600, 0, "Verdana")GUICtrlCreateLabel("Account#:", 300, 40)$input_infos[0] = GUICtrlCreateInput("", 360, 38, 150, 18)GUICtrlCreateLabel("Contact:", 540, 40)$input_infos[1] = GUICtrlCreateInput("", 600, 38, 150, 18)GUICtrlCreateLabel("Company:", 300, 70)$input_infos[2] = GUICtrlCreateInput("", 360, 68, 150, 18)GUICtrlCreateLabel("Phone:", 540, 70)$input_infos[3] = GUICtrlCreateInput("", 600, 68, 150, 18)GUICtrlCreateGroup("Notes", 290, 100, 500, 395)GUICtrlSetFont(-1, 8, 600, 0, "Verdana")$notizen = GUICtrlCreateEdit("", 300, 115, 480, 370, BitOR($WS_VSCROLL, $ES_MULTILINE, $ES_READONLY));~ GUICtrlSetBkColor(-1, 0xF8F8F8)GUICtrlCreateGroup("Updates", 290, 495, 400, 80)GUICtrlSetFont(-1, 8, 600, 0, "Verdana")$input_update = GUICtrlCreateEdit("", 300, 510, 380, 55, BitOR($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))$button_update = GUICtrlCreateButton("Update Artifact", 700, 530, 75, 20)Global $hStatus1 = GUICtrlCreateLabel('', 0, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)Global $hStatus2 = GUICtrlCreateLabel('', $width / 2 + 1, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)
$winuser = @UserNameIf @UserName = "751076" Then $winuser = "Max Mustermann 1"ElseIf $winuser = "748169" Then $winuser = "Max Mustermann 2"ElseIf $winuser = "828487" Then $winuser = "Max Mustermann 3"ElseIf $winuser = "759732" Then $winuser = "Max Mustermann 4"ElseIf $winuser = "828520" Then $winuser = "Max Mustermann 5"EndIf
GUISetState()
_TreeViewUpdate()
While True Switch GUIGetMsg() Case $GUI_EVENT_PRIMARYDOWN $aInfo = GUIGetCursorInfo($hGui) If $aInfo[4] = $hTreeView Then $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\') GUICtrlSetData($hStatus1, ' ' & StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\')) $readini = FileRead(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\')) GUICtrlSetData($notizen, $readini) $read_info1 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), 1) GUICtrlSetData($input_infos[0], $read_info1) $read_info2 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), 2) GUICtrlSetData($input_infos[1], $read_info2) $read_info3 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), 3) GUICtrlSetData($input_infos[2], $read_info3) $read_info4 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), 4) GUICtrlSetData($input_infos[3], $read_info4) Opt('GUIDataSeparatorChar', $oldGUIDataSeparatorChar) If BitAND(_GUICtrlTreeView_HitTest($hTreeView, $aInfo[0] - 11, $aInfo[1] - 41), 64) Then $checked = _GUICtrlTreeView_GetChecked($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView)) _GUICtrlTreeView_SetBold($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView), $checked) $hItem = _GUICtrlTreeView_GetFirstChild($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView)) If $hItem Then _MarkChildItems($hTreeView, $hItem, $checked) EndIf EndIf Case $button_update $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\') $read_update = GUICtrlRead($input_update) FileWrite(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), @CRLF & @MDAY & "." & @MON & " " & @YEAR & ", " & @HOUR & ":" & @MIN & " by " & $winuser & ":" & @CRLF & $read_update & @CRLF & "--------------------------------------------------------------------------------------------------------------------------------------------------------") $readini = FileRead(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\')) GUICtrlSetData($notizen, $readini) GUICtrlSetData($input_update, "") Case $button_createfile _checkInputs() Case $GUI_EVENT_CLOSE Exit EndSwitchWEnd
Func _checkInputs() Local $test = 0 For $i = 0 To UBound($input_infos) - 1 If GUICtrlRead($input_infos[$i]) = "" Then $test = 1 ExitLoop EndIf Next If $test = 1 Then MsgBox(0, "Achtung!", 'Bitte alle Felder unter "Artifact Infos" ausfüllen.') Else $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\') $read_createfile = GUICtrlRead($input_createfile) $read_input_infos1 = GUICtrlRead($input_infos[0]) $read_input_infos2 = GUICtrlRead($input_infos[1]) $read_input_infos3 = GUICtrlRead($input_infos[2]) $read_input_infos4 = GUICtrlRead($input_infos[3]) FileWrite($sPath & $read_createfile & ".txt", $read_input_infos1 & @CRLF & $read_input_infos2 & @CRLF & $read_input_infos3 & @CRLF & $read_input_infos4 & @CRLF & "Created " & @MDAY & "." & @MON & " " & @YEAR & ", " & @HOUR & ":" & @MIN & " by " & $winuser & @CRLF) _TreeViewUpdate() GUICtrlSetData($input_infos[0], "") GUICtrlSetData($input_infos[1], "") GUICtrlSetData($input_infos[2], "") GUICtrlSetData($input_infos[3], "") MsgBox(0, "", 'Artifact created') EndIf ReturnEndFunc ;==>_checkInputs
Func _MarkChildItems(ByRef $hTreeView, $hItem, $checked) Do $hNewItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hItem) If $hNewItem Then _MarkChildItems($hTreeView, $hNewItem, $checked) _GUICtrlTreeView_SetChecked($hTreeView, $hItem, $checked) _GUICtrlTreeView_SetBold($hTreeView, $hItem, $checked) $hItem = _GUICtrlTreeView_GetNextChild($hTreeView, $hItem) Until $hItem = 0EndFunc ;==>_MarkChildItems
Func _TreeViewUpdate() GUICtrlSetData($hStatus1, ' Bitte warten! Verzeichnis wird eingelesen...') GUICtrlSetData($hStatus2, '') $Timer = TimerInit() Local $aCount = _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles) If Not @error Then $msg = ' Benötigte Zeit: ' & Round(TimerDiff($Timer) / 1000, 3) & ' sek.' $msg &= ' | ' & $aCount[1] & ' Datei(en) und ' & $aCount[0] & ' Verzeichniss(e)' GUICtrlSetData($hStatus1, ' Fertig.') GUICtrlSetData($hStatus2, $msg) EndIfEndFunc ;==>_TreeViewUpdate
;===============================================================================; Function Name: _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles); Description:: erstellt ein TreeView mit Verzeichnissen (+Dateien); Parameter(s): $hTreeView = ControlID/Handle des TreeViews; $sPath = Verzeichnispfad, der dargestellt werden soll; $bFiles = True = auch Dateien anzeigen, False = nur Verzeichnisse; Requirement(s): #include<GuiTreeView.au3>; Return Value(s): Array mit Anzahl der Verzeichnisse=[0] und Dateien=[1]; 0 und @error = 1, wenn der Pfad nicht existiert bzw. kein Verzeichnis ist; 0 und @error = 2, wenn das FileSystemObject nicht erstellt werden konnte; Author(s): Oscar (http://www.autoit.de);===============================================================================Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False) Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0] If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0) $sPath = FileGetLongName($sPath) Local $oFSO = ObjCreate('Scripting.FileSystemObject') If @error Then Return SetError(2, 0, 0) _GUICtrlTreeView_BeginUpdate($hTreeView) _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView)) Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hTreeView) GUICtrlSetColor(-1, $FolderColor) _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 111) $Folder = $oFSO.GetFolder($sPath) _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount) If $bFiles Then For $Files In $Folder.Files $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem) $aCount[1] += 1 Next EndIf _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2) _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4) _GUICtrlTreeView_EndUpdate($hTreeView) GUICtrlSetState($hTreeViewItem, $GUI_EXPAND) $oFSO = '' Return $aCountEndFunc ;==>_GUICtrlTreeView_CreateDirectory
Func _CreateDirectoryRecursive($hTreeView, $Folder, $ItemOld, $bFiles, ByRef $aCount) Local $hFolderItem, $hFileItem, $FolderColor = 0x0000FF For $Subfolder In $Folder.SubFolders $hFolderItem = GUICtrlCreateTreeViewItem($Subfolder.Name, $ItemOld) GUICtrlSetColor(-1, $FolderColor) _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 3, 2) _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 110, 4) $aCount[0] += 1 _CreateDirectoryRecursive($hTreeView, $Subfolder, $hFolderItem, $bFiles, $aCount) If $bFiles Then For $Files In $Subfolder.Files $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hFolderItem) $aCount[1] += 1 Next EndIf NextEndFunc ;==>_CreateDirectoryRecursive