Hallo
habe die Function _FileListToArray erweitert, um mehrere Suchkreterien gleichzeitig übergeben zu können und das zurückgegebene Array sortieren zu lassen. Nun hätte ich gern einige Meinungen dazu.
#Include
#Include
Dim $FileList
[/autoit][autoit][/autoit][autoit]Global $array
Func _Dateiliste($sPath, $sFilter = "*", $iFlag = 0, $arrsort = 2)
;Variabeln
Local $hSearch, $sFile, $asFileList[1], $x = 0, $array
;Überprüfung ob das Verzeichnis existiert
If Not FileExists($sPath) Then Return SetError(1, 1, "")
;Überprüfung des Suchfilters auf üngültige Parameter
If (StringInStr($sFilter, "\")) Or (StringInStr($sFilter, "/")) Or (StringInStr($sFilter, ":")) Or (StringInStr($sFilter, ">")) Or (StringInStr($sFilter, "<")) Or (StringInStr($sFilter, "|")) Or (StringStripWS($sFilter, = "") Then Return SetError(2, 2, "")
;Überprüfung ob auch Ordner oder nur nach Dateien gesucht werden soll
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then Return SetError(3, 3, "")
;Wenn letztes Zeichen ein / ist wird es gelöscht
If (StringMid($sPath, StringLen($sPath), 1) = "\") Then $sPath = StringTrimRight($sPath, 1) ; needed for Win98 for x:\ root dir
$array = StringSplit($sFilter, ';', 2)
[/autoit][autoit][/autoit][autoit]For $element In $array
;Dateisuche
$hSearch = FileFindFirstFile($sPath & "\" & $array[$x])
If $hSearch = -1 Then Return SetError(4, 4, "")
Do
$sFile = FileFindNextFile($hSearch)
If $sFile = "" Then
Else
If $iFlag = 1 And StringInStr(FileGetAttrib($sPath & "\" & $array[$x]), "D") <> 0 Then ContinueLoop
If $iFlag = 2 And StringInStr(FileGetAttrib($sPath & "\" & $array[$x]), "D") = 0 Then ContinueLoop
$asFileList[0] += 1
If UBound($asFileList) <= $asFileList[0] Then ReDim $asFileList[UBound($asFileList) * 2]
$asFileList[$asFileList[0]] = $sFile
EndIf
Until $sFile = ""
$x = $x + 1
Next
FileClose($hSearch)
ReDim $asFileList[$asFileList[0] + 1] ; Trim unused slots
If $arrsort <> 2 Then _ArraySort($asFileList, $arrsort)
Return $asFileList
EndFunc
$FileList = _Dateiliste("\Ordner", "*.txt;*.bmp", 0, 2) ; 0=aufsteigend 1=absteigend 2=nach Fundreihenfolge sortiert
_ArrayDisplay($FileList, "$FileList ")
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
Gruß Ralf