Ticket #820: FLTA.au3

File FLTA.au3, 1.8 KB (added by Spiff59, on Feb 15, 2009 at 5:35:26 PM)

_FIleListToArray (new version)

Line 
1Func _FileListToArray($sPath, $sFilter = "*", $iFlag = 0)
2 Local $hSearch, $sFile, $asFileList[1]
3 If Not FileExists($sPath) Then Return SetError(1, 1, "")
4 If StringRegexp($sFilter, "[\\/:<>|]") Or (Not StringStripWS($sFilter, 8)) Then Return SetError(2, 2, "")
5 If (StringMid($sPath, StringLen($sPath), 1) = "\") Then $sPath = StringTrimRight($sPath, 1); needed for Win98 for x:\ root dir
6 $hSearch = FileFindFirstFile($sPath & "\" & $sFilter)
7 If $hSearch = -1 Then Return SetError(4, 4, "")
8 Switch $iFlag
9 Case 0 ; Filas and folders
10 While 1
11 $sFile = FileFindNextFile($hSearch)
12 If @error Then
13 SetError(0)
14 ExitLoop
15 EndIf
16 $asFileList[0] += 1
17 If UBound($asFileList) <= $asFileList[0] Then ReDim $asFileList[UBound($asFileList) * 2]
18 $asFileList[$asFileList[0]] = $sFile
19 WEnd
20 Case 1 ; Files Only
21 While 1
22 $sFile = FileFindNextFile($hSearch)
23 If @error Then
24 SetError(0)
25 ExitLoop
26 EndIf
27 If StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") Then ContinueLoop
28 $asFileList[0] += 1
29 If UBound($asFileList) <= $asFileList[0] Then ReDim $asFileList[UBound($asFileList) * 2]
30 $asFileList[$asFileList[0]] = $sFile
31 WEnd
32 Case 2 ; Folders Only
33 While 1
34 $sFile = FileFindNextFile($hSearch)
35 If @error Then
36 SetError(0)
37 ExitLoop
38 EndIf
39 If StringInStr(FileGetAttrib($sPath & "\" & $sFile), "D") = 0 Then ContinueLoop
40 $asFileList[0] += 1
41 If UBound($asFileList) <= $asFileList[0] Then ReDim $asFileList[UBound($asFileList) * 2]
42 $asFileList[$asFileList[0]] = $sFile
43 WEnd
44 Case Else
45 Return SetError(3, 3, "")
46 EndSwitch
47 FileClose($hSearch)
48 ReDim $asFileList[$asFileList[0] + 1]; Trim unused slots
49 Return $asFileList
50EndFunc ;==>_FileListToArray