Страница: 1 |
Страница: 1 |
Вопрос: Рекурсивный перебор папок
Добавлено: 27.02.05 13:23
Автор вопроса: Rebel | Web-сайт:
пытаюсь рекурсивно перебирать все папки в каталоге при помощи функции dir. вываливается после первого возврата из рекурсии, почему?
Private Sub BuildTree(RootPath As String, Optional Level As Integer = 0)
Dim MyName As String, strTab As String
For i = 1 To Level
strTab = strTab & Chr(9)
Next i
MyName = Dir(RootPath, vbDirectory)
Do While MyName <> ""
If MyName <> "." And MyName <> ".." Then
If (GetAttr(RootPath & MyName) And vbDirectory) = vbDirectory Then
txtList.Text = txtList.Text & vbCrLf & strTab & MyName
If chkRec.Value Then BuildTree RootPath & MyName & "\", Level + 1
End If
End If
MyName = Dir
Loop
End Sub
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #1
Добавлено: 27.02.05 20:53
izza togo chto ty vyzyvaesh` funkciyu Dir v BuildTree(v rekursii) i v rezul`tate ona tebe vse mozmozhnye varianty uzhe vybiraet, i potom sootvetstvenno tam uzhe nichego ne ostalos`....s API luchshe delaj, proshe budet....ili mozhesh` snachala vse papki Dir'om zagnat` v massiv ili eshe kuda, a potom po kazhdoj projtis` i tozhe samoj podelat`....no pomoemu API luchshe
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 27.02.05 23:15
Некто на одном из форумов усердно доказывал, что Dir - это рулез, а FindFirstFile - отстой )
Пока речь не зашла о рекурсии.
Так что используй нормальный способ - поиск при помощи FindFirstFile.
Номер ответа: 3
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #3
Добавлено: 27.02.05 23:49
Если есть желание я могу отправить по мылу свой проект прекрасно работает, может перебрать даже диски. Писалось (на коленях) для того чтобы в огромной куче файлов и папок выбрать файлы у которых определенная длина имени и скопировать в другую папку
Номер ответа: 4
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #4
Добавлено: 28.02.05 01:41
Есть ещё вариант для ленивых - через CreateObject и там какую-то хрень с FileWorkScript, типа.
Там нет проблем с двумя первыми папками ("." и ".." и перемешанными файлами с папками.
Тока она чуть медленнее работает - поэтому я тоже уже перешёл на API, чего и всем советую. 8)
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 28.02.05 14:03
Ещё есть вариант с элемантами... dir list and filebox
Номер ответа: 6
Автор ответа:
Rebel
Вопросов: 32
Ответов: 50
Web-сайт:
Профиль | | #6
Добавлено: 28.02.05 15:50
а апишный примерчик можно??
Номер ответа: 7
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #7
Добавлено: 28.02.05 15:55
На какое мыло?
Номер ответа: 8
Автор ответа:
Rebel
Вопросов: 32
Ответов: 50
Web-сайт:
Профиль | | #8
Добавлено: 28.02.05 22:28
atr_temp@mail.ru