CodeName33 » 01.09.2004 (Ср) 13:51
А вот так можно без всякиз DirListBox'ов. Все файлы внутри папки и её подпапок с полными путями сохраняются в массив String и функция возвращает количество файлов:
Public Function GetSubFolderFiles(ByVal Folder As String, FilesArray() As String) As Long
Dim i As Long, ArrayF() As String, ArrayC As Long, S2 As String, cDir As Long, cSize As Long, S As String
ReDim ArrayF(1 To 1) As String
ArrayC = 1: cDir = 1
ArrayF(ArrayC) = DirFilterIN(Folder) + "\"
GETFOLDERS:
Folder = DirFilterIN(Folder) + "\"
S = Dir(Folder, vbDirectory Or vbArchive Or vbHidden Or vbNormal Or vbReadOnly Or vbSystem)
Do Until S = ""
If Not StrComp(S, ".") = 0 And Not StrComp(S, "..") = 0 Then
S2 = Folder + S
If (GetAttr(S2) And vbDirectory) = vbDirectory Then
ArrayC = ArrayC + 1
ReDim Preserve ArrayF(1 To ArrayC) As String
ArrayF(ArrayC) = S2
Else
GetSubFolderFiles = GetSubFolderFiles + 1
ReDim Preserve FilesArray(1 To GetSubFolderFiles) As String
FilesArray(GetSubFolderFiles) = S2
End If
End If
S = Dir
Loop
If cDir < ArrayC Then
cDir = cDir + 1
Folder = ArrayF(cDir)
GoTo GETFOLDERS
End If
End Function
Public Function DirFilterIN(DirName As String) As String
On Error Resume Next
If Mid$(DirName, Len(DirName), 1) = "\" Then
DirFilterIN = Mid$(DirName, 1, Len(DirName) - 1)
Else
DirFilterIN = DirName
End If
End Function
Программисты не глючат - глючат компиляторы...