Страница: 1 |
Привет всем ! Есть код: Private Sub Command1_Click() Dim Fold As String Fold = Dir("c:\*", VbFileAttribute.vbDirectory) List1.AddItem Fold Do While Fold <> "" Fold = Dir If Fold <> "" And GetAttr("c:\" & Fold) = vbDirectory Then List1.AddItem Fold End If Loop End Sub Но если папки имеют атрибуты Скрытый, Архивный или системный то в список они не заносятся. Можно конечно написать так If Fold <> "" And GetAttr("c:\" & Fold) = vbDirectory or _ And GetAttr("c:\" & Fold) = vbDirectory + vbArchive + vbHidden ............................................. и так далее Then но так почемуто не всегда срабатывает да и писать многовато :( (ведь надо перебрать все варианты) Как можно усовершенствовать этот пример(чтобы он получал список всех папок независимо от их атрибутов), или как можно получить список ВСЕХ папок в текущей директории другими способами ? Заранее благодарю !
Проще всего использовать DirListBox. Сделай ему Visible=false. Немного больше памяти займет, зато быстрее. Это важно, когда хочешь получить список каталогов со вложенными подкаталогами. А вообще можно добавить этот контрол даже в Run-time и затем его удалить. DirListBox не показывает скрытые папки! А через FSO нельзя как нить ? И еще может можно как нибудь использовать (dir /a:d /b) это в Досе. Но так чтобы не писать в файл и не брать из него ? Через FSO можно: Private FSO as New FileSystemObject Private FOL as Folder Private Sub GetFolders(Root as String) Dim xFOL as Folder Set FOL=FSO.GetFolder(Root) For Each xFOL In FOL.SubFolders List1.AddItem xFOL.Name DoEvents GetFolders(xFOL.Path) Next End Sub Рекурсивный перебор папок, выводит все подкаталоги с любой степенью вложености. Тормознутый правда, но всеже без использования DirListBox. Кстати выводит все каталоги с любыми атрибутами Удачи Дуже дякую Страница: 1 |
Вопрос: Получения списка папок ?....
Добавлено: 14.08.03 07:00
Автор вопроса: Grayich | Web-сайт:
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #1
Добавлено: 14.08.03 09:09
Номер ответа: 2
Автор ответа:
Serega
Вопросов: 6
Ответов: 7
Профиль | | #2
Добавлено: 14.08.03 09:14
Номер ответа: 3
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #3
Добавлено: 14.08.03 09:23
Номер ответа: 4
Автор ответа:
ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #4
Добавлено: 14.08.03 10:21
Номер ответа: 5
Автор ответа:
Grayich
ICQ: 208280504
Вопросов: 56
Ответов: 164
Web-сайт:
Профиль | | #5
Добавлено: 14.08.03 10:31