Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 85
от 22.07.2005, 00:30

Администратор:Калашников О.А.
В рассылке:Подписчиков: 106, Экспертов: 7
В номере:Вопросов: 1, Ответов: 2


Вопрос № 23584: Здравствуйте уважаемые эксперты! Как можно организовать поиск файлов в компьютере ,например: *.txt,посредством Visual Basic. Желательно пример. Заранее благодарен!...

Вопрос № 23.584
Здравствуйте уважаемые эксперты!
Как можно организовать поиск файлов в компьютере ,например: *.txt,посредством Visual Basic.
Желательно пример.
Заранее благодарен!
Отправлен: 16.07.2005, 12:45
Вопрос задал: Матвеев Стас (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: _Виталий
Здравствуйте, Матвеев Стас!
Как-то писал такую функцию. Причем она ищет файлы и по нужному имени, а также по маске(*.txt или file.*). Все найденные файлы с полным путём сохраняет в переменной 'Report'. Также фунция предусматривает поиск нужного файла и его удаление, за это отвечает переменная'BOOL'- если 'True' то фунция ищет и удаляет, если 'False' то прсто поиск. Функция имеет входные параметры 'dir_name' имя папки где осуществляется поиск и 'FindFile' искомый файл. Причем если BOOL=True и FindFile="", то функция удалит директорию 'dir_name' вместе с вложенными папками. И еще имя директории в 'dir_name' не должно заканчиваться символом ''. Пример. На форму закинте одну кнопку, для поиска.
----------------------------------------------------------------
Dim Report As String
Dim BOOL As Boolean
Option Explicit
Private Sub Command1_Click()
BOOL = False
DirDF "c:Program files", "*.exe"
MsgBox Report
End Sub
Private Sub DirDF(ByVal dir_name As String, FindFile As String)
On Error Resume Next
Dim file_name As String
Dim files As Collection
Dim i As Integer
Set files = New Collection
file_name = Dir$(dir_name & "*.*", vbReadOnly + vbHidden + vbSystem + vbDirectory)
Do While Len(file_name) > 0
If (file_name <> "..") And (file_name <> ".") Then
files.Add dir_name & "" & file_name
End If
file_name = Dir$()
Loop
For i = 1 To files.Count
file_name = files(i)
' See if it is a directory.
If GetAttr(file_name) And vbDirectory Then
' It is a directory. Delete it.
DirDF file_name, FindFile
Else
' It's a file. Delete it.
file_name = LCase(file_name)
If BOOL = True Then
SetAttr file_name, vbNormal
Kill file_name
Else
If Left(FindFile, 1) = "*" Then
If Right(file_name, Len(FindFile) - 1) = Right(FindFile, Len(FindFile) - 1) Then Report = Report + file_name + vbCrLf
ElseIf Right(FindFile, 1) = "*" Then
If Mid(file_name, (InStrRev(file_name, "", -1, vbTextCompare) + 1), Len(FindFile) - 1) = Left(FindFile, Len(FindFile) - 1) Then Report = Report + file_name + vbCrLf
Else
If Mid(file_name, (InStrRev(file_name, "") + 1)) = FindFile Then Report = Report + file_name + vbCrLf
End If
End If
End If
Next i
If BOOL = True Then RmDir dir_name
End Sub
---------------------------------------------------------------------
Ответ отправил: _Виталий (статус: 4-ый класс)
Отправлен: 16.07.2005, 14:01
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое!

Отвечает: Залетин Виталий Викторович
Здравствуйте, Матвеев Стас!
Примера под рукой нет потому и не дам, а писать долго. Но могу сказать, что средствами бейсика файлы искать можно, используя рекрсивный вызов процедуры поиска, используя Dir$ (если искать в подкаталогах). Это не самый эффективный подход к этому вопросу.
Наиболее разумно использовать АПИ функции FindFirstFile, FindNextFile, FindClose. Походите по бейсик-сайтам - там полно таких примеров (vbnet.ru, vb.kiev.ua (на нем отличный АПИ-справочник))
---------
Учиться никогда не поздно. Особенно программированию!
Ответ отправил: Залетин Виталий Викторович (статус: 2-ой класс)
Отправлен: 16.07.2005, 14:04
Оценка за ответ: 5
Комментарий оценки:
Спасибо.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.basicvba
Отписаться
Вспомнить пароль

В избранное