End Sub. 3. Программа "Поиск файла" производит поиск файла в указанном пользователем каталоге и его подкаталогах

3. Программа "Поиск файла" производит поиск файла в указанном пользователем каталоге и его подкаталогах. Окно программы приведено на рис.4.3.

Dim cDir As String ' путь к папке, в которой будет

' производиться поиск

Dim fileMask As String ' имя или маска для поиска

Dim n As Integer ' количество файлов, удовлетворяющих параметрам поиска

Рис.4.3. Окно программы Поиск файла

Поиск файла в указанном каталоге и его подкаталогах осуществляется при помощи рекурсивной функции find

Function find(dir_path As String)

Dim back_path As String ‘обратный путь, если есть подкаталоги

Dir1.Path= dir_path

File1.Path= dir_path

‘Поиск в текущем каталоге

If File1.ListCount<> 0 Then

‘File1.ListCount - количество файлов по адресу

‘File1.Path

If Mid(fileMask, 1, 1)= “*” Then

‘Установка фильтра на список File1, если нужны все файлы с определенным расширением или любые файлы.

' и вывод всех найденных файлов в список List1

File1.Pattern = fileMask

For i = 0 To (Filel.ListCount - 1) Step 1

n = n + 1

' добавление найденного файла в список List1

' (в список добавляется полный путь к файлу)

If Len(File1.Path). <> 3 Then

List1.Addltem File1.Path + "\” + File1.List(i)

Else: List1.Addltem File1.Path + File1.List(i)

End If

' Listl.Addltem File1.Path + File1.List(i) -

' добавление элемента File1.Path + File1.List (i)

' в список List1

Next i

Else

' если нужны файлы с конкретным именем и расширением

For i = 0 То (File1.ListCount - 1) Step 1

If File1.List(i) = fileMask Then

n = n + 1

' добавление найденного файла в список List1

If Len(File1.Path) <> 3 Then

List1.Addltem File1.Path + " \“+ _

File1.List(i)

Else: List1.Addltem File1.Path + File1.List(i)

End If

End If

Next i

End If

EndIf

' заход в подкаталог каталога Dir1.Path осуществляется

' следующим образом:

Dir1.List (i), где i - номер подкаталога;

' всего подкаталогов - Dir1.ListCount,

' их нумерация идет от 0 до Dir1. ListCount-1

' если есть подкаталоги

If Dir1.ListCount <> 0 Then

back_path = Dir1.Path ' обратный путь

For j = 0 То (Dir1.ListCount - 1) Step 1

Dir1.Path = back_path

Call find(Dir1.List(j))

Next j

End If

'вывод количества найденных файлов

Label2.Caption = "Найдено файлов: " + Format(n)

End Function

' щелчок на кнопке "Найти"

Private Sub Command1_Click()

If Text1.Text <> "" Then

Dir1.Visible = False

Command1. Enabled = False

' очистка результата предыдущего поиска

n = 0

Label2.Caption = "Найдено файлов: " + Format(n)

List1.Clear

' считывание маски

fileMask = Text1.Text

' определение пути к папке для поиска

If Len(Dir1.Path) <> 3 Then ' если выбран не корень

cDir = Dir1.Path + "\”

Else: cDir = Dir1.Path

End If

Call find(cDir)

Dir1.Path = cDir

Dir1.Visible = True

Command1.Enabled = True

If n = 0 Then

Call MsgBox ("Файлов, удовлетворяющих параметру " + _

"поиска не найдено.",,"Поиск файла")

End If

Else

Call MsgBox ("Нужно ввести параметр поиска.",, _

"Поискфайла")

End If

End Sub

' смена диска

Private Sub Drive1_Change()

' В случае смены диска может возникнуть ошибка (выбор

' дисковода в том случае, если в нем нет диска). Для

' обработки этой ошибки используется переход

' к метке drive_error (смотри ниже).

On Error GoTo drive_error

Dir1.Path = Drive1.Drive + "\”

' обработка ошибок

drive_error:

' если возникла ошибка, то выбирается диск,

' выбранный раньше

Drive1.Drive = Dir1.Path

End Sub

' инициализация формы

Private Sub Form_Initialize()

Drive1.Drive = "c"

File1.Visible = False

End Sub

' нажатие клавиши в поле ввода имени файла или маски

' для поиска

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then Command1.SetFocus

End Sub

Часть 3

Cells(5,3)= “Матрица С”

For i = 1 To 2

For j = 1 To 4

Cells(i+5, j+2) = c(i,j)

‘cm=Str(c(i,j))

‘Write # 2, cm


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow