Метод поиска файлов и папок в Visual Basic - VB

Узнай цену своей работы

Формулировка задачи:

Вообщем с этим я пытаюсь разобраться уже 3ий час. Ни чего не получается. Понимаю все банально, мол есть хэлп. Так вот хэлпа нет . Буду очень признателен, если кто нить поможет. Спасибо!

Решение задачи: «Метод поиска файлов и папок в Visual Basic»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Public FullFileName() As String 'Массив полных путей найденных файлов
  4. Public fCount As Long           'Количество найденных по маске файлов
  5.  
  6. Sub Find_Test()
  7.     Dim Drv As String
  8.     Dim Pth As String
  9.     Dim fFile As String
  10.    
  11.     Dim I As Long
  12.    
  13.     ReDim FullFileName(1 To 100) ' Для увеличения быстродействия увеличиваем массив с шагом в 100
  14.    
  15.     fCount = 0      ' Инициализация счетчика
  16.    Drv = 'C'       ' Поиск на диске C:
  17.    Pth = ' '       ' Путь, с которого начинается поиск
  18.    fFile = '*.ba?' ' Маска для поиска
  19.  
  20.     ChDrive Drv     ' Установка текущего диска...
  21.    Call FindFile(fFile, Pth)   ' и старт рекурсивного поиска
  22.  
  23.     MsgBox 'Поиск по маске ''' & fFile & ''' завершен !' & vbCr & _
  24.         'найдено ' & fCount & ' файлов.', vbOKOnly Or vbInformation, 'Диск ' & Left(CurDir, 2)
  25.    
  26.    
  27.     For I = 1 To fCount
  28.         Debug.Print FullFileName(I) ' выводим массив
  29.    Next I
  30. End Sub
  31.  
  32. Sub FindFile(fFile As String, Pth As String)
  33.     Dim AllDirs() As String
  34.     ReDim AllDirs(1 To 100)
  35.     Dim I As Integer
  36.     Dim M As Integer
  37.     Dim strFile As String
  38.     Dim Cur As String
  39.    
  40.     ChDir Pth
  41.     Cur = CurDir
  42.     If Not Right(Cur, 1) = ' ' Then Cur = Cur & ' '
  43.    strFile = Dir(fFile, vbHidden Or vbSystem Or vbReadOnly)
  44.     Do Until Len(strFile) = 0
  45.         fCount = fCount + 1
  46.         M = UBound(FullFileName())
  47.         If fCount > M Then ReDim Preserve FullFileName(1 To M + 100)
  48.         FullFileName(fCount) = Cur & strFile
  49.         strFile = Dir()
  50.     Loop
  51.    
  52.     strFile = Dir('*.*', vbHidden Or vbSystem Or vbReadOnly Or vbDirectory)
  53.    Do Until Len(strFile) = 0
  54.         If GetAttr(strFile) = vbDirectory Then
  55.             If strFile <> '.' And strFile <> '..' Then
  56.                I = I + 1
  57.                 M = UBound(AllDirs())
  58.                 If I > M Then ReDim Preserve AllDirs(1 To M + 100)
  59.                 AllDirs(I) = strFile
  60.             End If
  61.         End If
  62.         strFile = Dir()
  63.     Loop
  64.     M = I
  65.     For I = 1 To M
  66.         Call FindFile(fFile, AllDirs(I))
  67.     Next I
  68.  
  69.     ChDir Cur & '..'
  70. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут