Private Sub GetFilteredFileList(Dir As String, Pattern As String, Sorted As Boolean, Ascending As Boolean) As List
If Pattern = "*.*" Then
Return ListFilesOnly(Dir, Sorted, Ascending)
End If
Dim lstRes As List
lstRes.Initialize
' Get the files list in the Dir directory without directories names.
Dim lstFilesOnly As List
lstFilesOnly = ListFilesOnly(Dir, Sorted, Ascending)
' Analyzes the Pattern
Dim Filter As typFilter
Filter.Initialize
Filter = ParsePattern(Pattern)
' Filters the files list
Dim FileName As String
Dim FileBaseName As String
Dim Extension As String
Dim Valid As Boolean
For i = 0 To lstFilesOnly.Size - 1
FileName = lstFilesOnly.Get(i)
If FileName.Contains(".") Then 'TEST FOR "."
'The following line causes and error if the FileName has no extension.
FileBaseName = FileName.SubString2(0, FileName.LastIndexOf("."))
' Filters on name
Select Case Filter.NamePosition
Case F_NONE
Valid = True
Case F_STARTSWITH
Valid = FileBaseName.StartsWith(Filter.NameFilter)
Case F_ENDSWITH
Valid = FileBaseName.EndsWith(Filter.NameFilter)
Case F_CONTAINS
Valid = FileBaseName.Contains(Filter.NameFilter)
End Select
If Valid And Filter.ExtFilter <> "*" Then
' Filters on extension
Extension = FileName.SubString(FileName.LastIndexOf(".") + 1)
Select Case Filter.ExtPosition
Case F_NONE
Valid = True
Case F_STARTSWITH
Valid = Extension.StartsWith(Filter.ExtFilter)
Case F_ENDSWITH
Valid = Extension.EndsWith(Filter.ExtFilter)
Case F_CONTAINS
Valid = Extension.Contains(Filter.ExtFilter)
End Select
End If
If Valid Then
lstRes.Add(FileName)
End If
End If
Next
Return lstRes
End Sub