Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Рекурсивный перебор папок Добавлено: 27.02.05 13:23  

Автор вопроса:  Rebel | Web-сайт: rebel.bos.ru
пытаюсь рекурсивно перебирать все папки в каталоге при помощи функции 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-сайт: www.radio-device.narod.ru
 Профиль | | #3
Добавлено: 27.02.05 23:49
Если есть желание я могу отправить по мылу свой проект прекрасно работает, может перебрать даже диски. Писалось (на коленях) для того чтобы в огромной куче файлов и папок выбрать файлы у которых определенная длина имени и скопировать в другую папку

Ответить

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



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #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-сайт: rebel.bos.ru
 Профиль | | #6
Добавлено: 28.02.05 15:50
а апишный примерчик можно??

Ответить

Номер ответа: 7
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #7
Добавлено: 28.02.05 15:55
На какое мыло?

Ответить

Номер ответа: 8
Автор ответа:
 Rebel



Вопросов: 32
Ответов: 50
 Web-сайт: rebel.bos.ru
 Профиль | | #8
Добавлено: 28.02.05 22:28
atr_temp@mail.ru

Ответить

Страница: 1 |

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



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