Public resFile As Object
Public Const resFileSpec = "c:\ListFiles.txt"
Sub Main()
Dim fsObj As Object
Const sourceDir = "c:\temp"
Set fsObj = CreateObject("Scripting.FileSystemObject")
If fsObj.FolderExists(sourceDir) = True Then
Set resFile = fsObj.OpenTextFile(resFileSpec, 2, True)
Call ViewFolder(sourceDir)
resFile.Close
MsgBox "Готово", vbInformation, "Отчёт"
Else
MsgBox "Отсутствует каталог-источник: " & UCase(sourceDir), vbCritical, "Ошибка"
End If
Set fsObj = Nothing
End Sub
Private Function ViewFolder(dirSource As String)
Dim fsObj As Object, pntDir As Object, curSubDir As Object
Set fsObj = CreateObject("Scripting.FileSystemObject")
Set pntDir = fsObj.GetFolder(dirSource)
resFile.WriteLine (UCase(dirSource))
Call Enum_Files(dirSource)
resFile.WriteLine ("")
For Each curSubDir In pntDir.SubFolders
Call ViewFolder(curSubDir.Path)
Next curSubDir
Set pntDir = Nothing
Set fsObj = Nothing
End Function
Private Function Enum_Files(dirSource As String)
Dim fsObj As Object, pntDir As Object, curFile As Object
Set fsObj = CreateObject("Scripting.FileSystemObject")
Set pntDir = fsObj.GetFolder(dirSource)
For Each curFile In pntDir.Files
resFile.WriteLine (curFile.Name)
Next curFile
Set pntDir = Nothing
Set fsObj = Nothing
End Function
Снова поиск
Как-то в разделе winapi 32 я спросил, как перечислить файлы. Ответ мне пришел, но прога почему-то не работает. Все дело в именах найденнных файлов (сзади добавляются тучи нечиатемых символов). Может, кто знает, в чем дело?
Да, кстати, вот и сама прога...:rolleyes:
Совет на будущее: помещая тему в новый раздел, описывайте задачу полностью.
Приложенный Вами код у меня не работает. Смысл сообщения об ошибке - исчерпан размер стека.
Поскольку с WinAPI я знаком плохо, то могу лишь предложить свой вариант решения (он основан на использовании FSO).
Алгоритм остался прежним - рекурсивный спуск по дереву каталогов.
Код:
Примечания:
1. По сравнению с функциями API работать будет медленнее.
2. Код проверен в составе проекта на VB6 под Windows 2000 Pro.
Спасибо, принял к сведению. Вообще, проблема с переполнением стека связана с тем, что на концах имен найденнных файлов тучи нулевых символов. Я разрешил эту проблему. Кстати, спасибо за этот вариант перечисления, я до этого плохо представлял как пользоваться FSO.