Hallo an alle,
ich bräuchte eure hilfe
Dieses kleine Script soll zuerst einige Order anzeigen, Danach soll aus dieser Auswahl ein Ordner ausgesucht werden und danach werden auch hier wieder ordner aber mit deren Datein angezeit (bzw. nur eine Art von Datei .cfg.
Hier die Funktion die die Ordner Liefert, Definitionen und den Aufruf der Funktion
Spoiler anzeigen
#include <Array.au3>
;Anfangspfad
Global $fpath="Z:\blalbla\"
;Liefert die Arbeitsgruppenordner
Global $filelist = _FileListToArrayListfirst($fpath)
;GUI für die Auswahl der Arbeitsgruppe
$ruck = _ArrayListDisplaynow($filelist)
;Sollte die cfg´s suchen
Global $filelist2= _FileListToArrayList($ruck)
;sollte die cfg´s anzeigen
_ArrayListDisplaynow($filelist2)
Func _FileListToArrayListfirst($Path)
Local $Handle, $file
Local $ArrayList=ObjCreate("System.Collections.ArrayList")
$Handle=FileFindFirstFile($Path & "*.*")
if @error then return SetError(3,3,$ArrayList)
Do
[/autoit] [autoit][/autoit] [autoit]$file=FileFindNextFile($Handle)
if @error then ExitLoop
if StringInStr(FileGetAttrib($Path & $File), "D") Then
$ArrayList.add($Path & $file & "\")
;_FileListToArrayListExtended($Path & $file & "\", $ArrayList)
Else
if StringRight($File,3) = "cfg" Then
$ArrayList.add($Path & $file & "\")
EndIf
endif
Until 0
FileClose($Handle)
Return ($ArrayList)
EndFunc
Diese Funktion soll die Ordner mit den CFGs ausgeben
Basiert auf der Funktion von oben. Nur das es jetzt nochmal alle Unterordner untersucht.
Spoiler anzeigen
Func _FileListToArrayList($Path2)
Local $Handle3, $file
Local $ArrayList=ObjCreate("System.Collections.ArrayList")
local $test= ""
$test = $Path2
$Handle3=FileFindFirstFile( $test & "*.*")
if @error then return SetError(3,3,$ArrayList)
Do
[/autoit] [autoit][/autoit] [autoit]$file=FileFindNextFile($Handle3)
if @error then ExitLoop
if StringInStr(FileGetAttrib($Path2 & $File), "D") Then
$ArrayList.add($Path2 & $file)
_FileListToArrayListExtended($Path2 & $file & "\", $ArrayList)
Else
if StringRight($File,3) = "cfg" Then
$ArrayList.add($Path2 & $file)
EndIf
endif
Until 0
FileClose($Handle3)
Return ($ArrayList)
EndFunc
Func _FileListToArrayListExtended($Path, ByRef $ArrayList)
Local $Folder
$Handle = FileFindFirstFile($Path & "*.*")
if @error Then return SetError(3,3,$ArrayList)
Do
$file=FileFindNextFile($Handle)
if @error then ExitLoop
if StringInStr(FileGetAttrib($Path & $file), "D") Then
_FileListToArrayListExtended($Path & $file & "\", $ArrayList)
Else
if StringRight($File,3) = "cfg" Then
$ArrayList.add($Path & $file)
EndIf
endif
Until 0
FileClose($Handle)
Return ($ArrayList)
EndFunc
So hier das GUI
Spoiler anzeigen
Func _ArrayListDisplaynow(ByRef $ArrayList)
Local $opt = Opt("GUIOnEventMode",0)
Local $GUI= GUICreate("Test",1000,536)
Local $Combo=GUICtrlCreateCombo("",10,50,900,30)
Local $Button=GUICtrlCreateButton("Auswahl bestätigen",100,496,121,33,0)
Local $Abbruch=GUICtrlCreateButton("Abbruch",300,496,121,33,0)
for $e in $ArrayList
GUICtrlSetData($Combo,$e)
Next
Guisetstate(@SW_SHOW)
local $ruckgabe=""
Do
Switch GUIGetMsg()
case $Combo
Local $string
$string &=Guictrlread($Combo) & "|"
Local $Array
Local $Edit
$Array= StringSplit(StringTrimRight($string,1), "|")
$Edit = GUICtrlCreateEdit("",20,150,500,200,0x0800)
Global $text=""
for $i = 0 to UBound($Array) -1
$text = $Array[$i] & @CRLF
Next
GUICtrlSetData($edit, $text)
[/autoit] [autoit][/autoit] [autoit]$ruckgabe =$text
case -3
ExitLoop
Case $Button
GUIDelete ($GUI)
return $ruckgabe
Case $Abbruch
ExitLoop
EndSwitch
Until 0
GUIDelete ($GUI)
Opt("GUIOnEventMode", $opt)
EndFunc
Die Ordner zur Vorauswahl werden angezeigt aber ich kann das Ergebnis aus der GUI nicht an die 2. Funktion zum Suchen der .cfg´s geben. Bzw. versteht die Funktion nicht was in der Variablen $ruck steht. Obwohl ja da auch nur ein Pfad (String) ist. Ich versteh nicht warum dies so ist. Es wird genau ein Pfad zurück.
In der 1. Funktion funktioniert es doch auch mit dem vordefinierten Pfad.
Habe ich etwas übersehen?
Vielen Dank
MOE
Falls irgendwas unklar ist sofort schreiben ![]()