Hallo zusammen,
seit unsere Arbeitsrechner auf Windows 10 umgestellt worden sind, schmiert vereinzelt die TreeView Funtion bei uns ab, was vorher unter Win7 ewig absolut fehlerfrei lief.
Fehler ist "The requested action with this object has failed.:" und zwar moniert er folgendes:
Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
Local $hFileItem, $FolderColor = 0x000000, $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, 'imageres.dll', 101) ;Wenn erledigt dann "Grüner Haken"
$Folder = $oFSO.GetFolder($sPath)
_CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
$anzahl_normal = "0"
$anzahl_wichtig = "0"
$anzahl_reservierung = "0"
$anzahl_liefertermin = "0"
$reservierungen = GUICtrlCreateTreeViewItem("Reservierungen " & "(" & $anzahl_reservierung & ")", $hTreeView)
_GUICtrlTreeView_SetBold($hTreeView, $reservierungen, True)
_GUICtrlTreeView_SetIcon($hTreeView, $reservierungen, 'imageres.dll', 102)
GUICtrlSetColor(-1, 0xFF8000)
$wichtig = GUICtrlCreateTreeViewItem("Wichtig " & "(" & $anzahl_wichtig & ")", $hTreeView)
_GUICtrlTreeView_SetBold($hTreeView, $wichtig, True)
_GUICtrlTreeView_SetIcon($hTreeView, $wichtig, 'imageres.dll', 100)
GUICtrlSetColor(-1, $rot)
$liefertermine = GUICtrlCreateTreeViewItem("Liefertermine " & "(" & $anzahl_liefertermin & ")", $hTreeView)
_GUICtrlTreeView_SetBold($hTreeView, $liefertermine, True)
_GUICtrlTreeView_SetIcon($hTreeView, $liefertermine, '\\allgemein\TicketTool\settings\icons.dll', 0)
GUICtrlSetColor(-1, 0x0B610B)
$normal = GUICtrlCreateTreeViewItem("Normal " & "(" & $anzahl_normal & ")", $hTreeView)
_GUICtrlTreeView_SetBold($hTreeView, $normal, True)
_GUICtrlTreeView_SetIcon($hTreeView, $normal, 'imageres.dll', 99)
GUICtrlSetColor(-1, 0x0000FF)
If $bFiles Then
For $Files In $Folder.Files
$read_reservierung = FileReadLine($sPath & $Files.Name, 13)
;~ If @error Then MsgBox(0,"", "Fehler aufgetreten bei: $read_reservierung = FileReadLine($sPath & $Files.Name, 13)")
$read_important = FileReadLine($sPath & $Files.Name, 14)
;~ If @error Then MsgBox(0,"", "Fehler aufgetreten bei: $read_important = FileReadLine($sPath & $Files.Name, 14)")
$read_liefertermin = FileReadLine($sPath & $Files.Name, 15)
;~ If @error Then MsgBox(0,"", "Fehler aufgetreten bei: $read_liefertermin = FileReadLine($sPath & $Files.Name, 15)")
Select
Case $read_reservierung = 1
$anzahl_reservierung = $anzahl_reservierung + 1
$hFileItem1 = GUICtrlCreateTreeViewItem($Files.Name, $reservierungen)
_GUICtrlTreeView_SetIcon($hTreeView, $hFileItem1, 'imageres.dll', 102) ;Wenn Reservierung dann "Gelbes Ausrufezeichen"
GUICtrlSetColor(-1, 0xFF8000)
GUICtrlSetState($reservierungen, $GUI_EXPAND)
_GUICtrlTreeView_SetBold($hTreeView, $reservierungen, True)
GUICtrlSetData($reservierungen, "Reservierungen " & "(" & $anzahl_reservierung & ")")
Case $read_important = 1
$anzahl_wichtig = $anzahl_wichtig + 1
$hFileItem2 = GUICtrlCreateTreeViewItem($Files.Name, $wichtig)
_GUICtrlTreeView_SetIcon($hTreeView, $hFileItem2, 'imageres.dll', 100) ;Wenn Wichtig dann "Rotes X"
GUICtrlSetColor(-1, $rot)
GUICtrlSetState($wichtig, $GUI_EXPAND)
_GUICtrlTreeView_SetBold($hTreeView, $wichtig, True)
GUICtrlSetData($wichtig, "Wichtig " & "(" & $anzahl_wichtig & ")")
Case $read_liefertermin = 1
$anzahl_liefertermin = $anzahl_liefertermin + 1
$hFileItem3 = GUICtrlCreateTreeViewItem($Files.Name, $liefertermine)
_GUICtrlTreeView_SetIcon($hTreeView, $hFileItem3, '\\allgemein\TicketTool\settings\icons.dll', 0) ;Wenn Liefertermin Ticket dann "Grüner LKW"
GUICtrlSetColor(-1, 0x0B610B)
GUICtrlSetState($liefertermine, $GUI_EXPAND)
_GUICtrlTreeView_SetBold($hTreeView, $liefertermine, True)
GUICtrlSetData($liefertermine, "Liefertermine " & "(" & $anzahl_liefertermin & ")")
Case Else
$anzahl_normal = $anzahl_normal + 1
$hFileItem4 = GUICtrlCreateTreeViewItem($Files.Name, $normal)
_GUICtrlTreeView_SetIcon($hTreeView, $hFileItem4, 'imageres.dll', 99) ;Wenn normales Ticket dann "Blaues Fragezeichen"
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($normal, $GUI_EXPAND)
_GUICtrlTreeView_SetBold($hTreeView, $normal, True)
GUICtrlSetData($normal, "Normal " & "(" & $anzahl_normal & ")")
EndSelect
$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 $aCount
EndFunc ;==>_GUICtrlTreeView_CreateDirectory
Alles anzeigen
Das ist eine angepasste Variante von Oscar 's TreeView.
Er moniert zwischendurch mal (nicht immer, daher bin ich da auch verwundert) die Zeilen:
$read_reservierung = FileReadLine($sPath & $Files.Name, 13)
$read_important = FileReadLine($sPath & $Files.Name, 14)
$read_liefertermin = FileReadLine($sPath & $Files.Name, 15)
Speziell hängt er sich am Parameter .Name auf.
Die Meldung tritt mal gar nicht auf, mal etliche Male am Tag (meine Treeview wird alle 5 Minuten neu erstellt/aktualisiert) - und dies erst seit der Umstellung auf Windows 10.
Da unsere Win10 Rechner um einiges schneller sind habe ich die Vermutung (mehr ist es aber auch nicht), dass er einfach die Dateien noch nicht alle "durchgelesen" hat und er mit der TreeView erstellen schneller wäre als das durchlesen der ganzen Dateien und er daher den Fehler aufwirft.
Wie kann ich das umgehen? Denn das Tool stürzt natürlich vollständig ab, sobald er über diesen Fehler stolpert.
Ich hoffe diese Codezeilen reichen aus.
LG
Mirko