Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Получения списка папок ?.... Добавлено: 14.08.03 07:00  

Автор вопроса:  Grayich | Web-сайт: grayich.narod.ru | ICQ: 208280504 

Привет всем !

Есть код:

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

но так почемуто не всегда срабатывает да и писать многовато :( (ведь надо перебрать все варианты)

 

Как можно усовершенствовать этот пример(чтобы он получал список всех папок независимо от их атрибутов), или как можно получить список ВСЕХ папок в текущей директории другими способами ?

Заранее благодарю !

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #1 Добавлено: 14.08.03 09:09

Проще всего использовать DirListBox. Сделай ему Visible=false. Немного больше памяти займет, зато быстрее. Это важно, когда хочешь получить список каталогов со вложенными подкаталогами.

А вообще можно добавить этот контрол даже в Run-time и затем его удалить.

Ответить

Номер ответа: 2
Автор ответа:
 Serega



Вопросов: 6
Ответов: 7
 Профиль | | #2 Добавлено: 14.08.03 09:14

DirListBox не показывает скрытые папки!

Ответить

Номер ответа: 3
Автор ответа:
 Grayich



ICQ: 208280504 

Вопросов: 56
Ответов: 164
 Web-сайт: grayich.narod.ru
 Профиль | | #3
Добавлено: 14.08.03 09:23

А через FSO нельзя как нить ?

И еще может можно как нибудь использовать (dir /a:d /b) это в Досе. Но так чтобы не писать в файл и не брать из него ?

Ответить

Номер ответа: 4
Автор ответа:
 ZeroX



ICQ: 220401330 

Вопросов: 47
Ответов: 406
 Профиль | | #4 Добавлено: 14.08.03 10:21

Через 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.

Кстати выводит все каталоги с любыми атрибутами

Удачи

Ответить

Номер ответа: 5
Автор ответа:
 Grayich



ICQ: 208280504 

Вопросов: 56
Ответов: 164
 Web-сайт: grayich.narod.ru
 Профиль | | #5
Добавлено: 14.08.03 10:31

Дуже дякую

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам