Страница: 1 |
Страница: 1 |
Вопрос: Получить подкаталоги
Добавлено: 20.07.07 23:05
Автор вопроса: Gogic
Скажите плиз, как получить список подкаталогов директории?
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #1
Добавлено: 21.07.07 22:59
с помощью dirlistbox, если без выкрутасов
Правда, как я понял, он не видит скрытые папки.
Номер ответа: 2
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #2
Добавлено: 22.07.07 02:05
FindFirstFile
FindNextFile
GetFileAttributes, проверяешь атрибут FILE_ATTRIBUTE_DIRECTORY.
Номер ответа: 3
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #3
Добавлено: 22.07.07 12:46
Я уже так делал - антивирусы, настроенные на проверку открываемых файлов сходят с ума.
Private Const MAX_PATH As Long = 260
Private Const INVALID_HANDLE_VALUE As Long = -1
Private Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Public Sub InterateObject(Source As String)
Dim objName As String
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
Cont = True
hSearch = FindFirstFile(Source & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
objName = Left$(WFD.cFileName, InStr(WFD.cFileName, vbNullChar) - 1)
If Not (objName = "." Or objName = ".." Then
If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then
'ТУТ ФАЙЛЫ ОБРБАТЫВАЮТСЯ
MsgBox Source & objName
Else
'А ТУТ ПАПКИ
MsgBox Source & objName
InterateObject Source & objName & "\"
End If
End If
Cont = FindNextFile(hSearch, WFD)
Loop
Cont = FindClose(hSearch)
End If
End Sub
Это наверное один из самых быстрых способов (на VB ) перебора всех файлов и подкаталогов указанной папки
Номер ответа: 4
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #4
Добавлено: 23.07.07 18:11
ZagZag жжот Ну, можно и Dir() без параметров в цикле...
Номер ответа: 5
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #5
Добавлено: 24.07.07 09:17
Автор - Волков Антон (aka Funbit).
' отобразит в окне Immediate список папок
' в корневой директории на диске С
MyPath = "C:\"
MyName = Dir(MyPath, vbDirectory)
' Возвратит первую директорию.
Do While MyName <> "" ' Начало цикла
' Игнорируем текущую директорию или заключительную
If MyName <> "." And MyName <> ".." Then
' Используем битовое сравнение, чтобы определить
' что MyName есть директория (а не файл).
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' Отобразим в окне Immediate MyName
End If
End If
MyName = Dir.
Loop