Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Как найти файл на диске?

Поиск:
Инструкция:

1. подключить к новому проекту dll.ку под названием scrrun.dll, которая сидит в системной директории.
2. поместить на форму кнопку и textbox (непереименовывая пока).
3. зафигачить на форму весь исходник, который находится ниже и наслаждаться при нажатии на кнопку.
4. если плохо наслаждается, то раскомментируйте пятую строку в функции Help. smile

Код
Dim fso As New FileSystemObject
Dim file As String
Dim inpath As String

Private Sub Command1_Click()
Dim exists As Boolean
exists = FileExists("ger.txt", "c:\")
Text1.Text = inpath
End Sub

Public Function FileExists(Name As String, Path As String) As Boolean
If (Not fso.FolderExists(Path)) Then
   Exit Function
End If
file = Name
FileExists = Help(Path)
End Function

Public Function Help(Path As String) As Boolean
On Error Resume Next
Dim fld As Folder
Dim sfld As Folder
Dim sflds As Object

'Text1.Text = Path

Set fld = fso.GetFolder(Path)
   
If fso.FileExists(file) Then
   gotfile = True
   Help = True
   Exit Function
End If

Set sflds = fld.SubFolders

For Each sfld In sflds
   fso.GetFolder (sfld)
   If fso.FileExists(sfld.Path & "\" & file) Then
       Help = True
       inpath = sfld.Path
       Exit Function
   Else
       If sfld.SubFolders Then
           Help = Help(sfld.Path)
           Do While (fso.FileExists(inpath & "\" & file))
                  Exit Function
           Loop
       End If
   End If
   DoEvents
Next
End Function

boevik почитал это и подумал: "Мдааа..." smile
Цитата (boevik @ 29.6.2004, 19:50)
Я посмотрел твой код поиска файла. IMHO, много лишнего кода который ничего не делает.
Думаю, такой код легче понять

И предложил сделать так:
Код
Dim fso As New FileSystemObject
Dim file As String
Dim inpath As String

Private Sub Command1_Click()
Dim exists As Boolean
exists = FileExists("flag.doc", "E:\")
Text1.Text = inpath
End Sub

Private Function FileExists(Name As String, Path As String) As Boolean
If (Not fso.FolderExists(Path)) Then
   Exit Function
End If
file = Name
If Right(Path, 1) <> "\" Then Path = Path & "\"
FileExists = Help(Path)
End Function

Private Function Help(Path As String) As Boolean
On Error Resume Next
Dim sfld As Folder

'Text1.Text = Path

'условие остановки рекурсии
If fso.FileExists(Path & file) Then
   inpath = Path
   Help = True
   Exit Function
End If

'погружение в рекурсию (в следующие подпапки)
For Each sfld In fso.GetFolder(Path).SubFolders
   DoEvents
   If Help(sfld.Path & "\") Then
       Help = True
       Exit For
   End If
Next
End Function

Я с ним полностью согласен - так лучше!
Автор: cardinal, boevik
Сайт: http://






Просмотров: 3046

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную