Func _FileListToArray geändert

  • 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.


    [autoit]


    #Include
    #Include

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit]

    ;Überprüfung ob das Verzeichnis existiert
    If Not FileExists($sPath) Then Return SetError(1, 1, "")

    [/autoit][autoit][/autoit][autoit]

    ;Ü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, 8) = "") Then Return SetError(2, 2, "")

    [/autoit][autoit][/autoit][autoit]

    ;Ü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, "")

    [/autoit][autoit][/autoit][autoit]

    ;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

    [/autoit][autoit][/autoit][autoit]

    $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, "")

    [/autoit][autoit][/autoit][autoit]

    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 = ""

    [/autoit][autoit][/autoit][autoit]

    $x = $x + 1
    Next
    FileClose($hSearch)
    ReDim $asFileList[$asFileList[0] + 1] ; Trim unused slots
    If $arrsort <> 2 Then _ArraySort($asFileList, $arrsort)
    Return $asFileList

    [/autoit][autoit][/autoit][autoit]

    EndFunc
    $FileList = _Dateiliste("\Ordner", "*.txt;*.bmp", 0, 2) ; 0=aufsteigend 1=absteigend 2=nach Fundreihenfolge sortiert

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($FileList, "$FileList ")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]


    Gruß Ralf