WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  Visual Basic
  как программно произвести поиск файла

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   как программно произвести поиск файла
zvon2k опубликован 13-11-2001 16:17 MSK   Click Here to See the Profile for zvon2k   Click Here to Email zvon2k  
как программно произвести поиск файла
7in опубликован 13-11-2001 23:16 MSK     Click Here to See the Profile for 7in  Click Here to Email 7in     
Через WinAPI...
Вот тебе примерчик. Производит поиск файла на диске C: . Чтобы он работал, создай на форме текстовое поле Text1 (для ввода имени файла) и кнопку Command1 (для начала поиска)...

Option Explicit

Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_TEMPORARY = &H100
Const FILE_ATTRIBUTE_COMPRESSED = &H800
Const MAX_PATH = 260

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

Private Function ASCIIZ2VB(ByVal Str As String) As String
Dim i As Integer
For i = 1 To Len(Str)
If Mid(Str, i, 1) = Chr(0) Then
Exit For
Else
ASCIIZ2VB = ASCIIZ2VB + Mid(Str, i, 1)
End If
Next i
End Function

' Ищет файл Name в каталоге StartDir и во всех его подкаталогах
' Возвращает имя найденного файла или пустую строку, если файл найти не удалось
Private Function FileFind(ByVal Name As String, ByVal StartDir As String) As String
Static Finish As Boolean
Dim Data As WIN32_FIND_DATA
Dim Handle As Long, Result As Long
Dim FileName As String
If Right(StartDir, 1) <> "\" And Right(StartDir, 1) <> "/" And Right(StartDir, 1) <> ":" Then
StartDir = StartDir + "\"
End If
Caption = StartDir ' Выводит в заголовке окна имя каталога, в котором производится поиск
DoEvents ' А это чтобы выводилось :)))
Finish = False
Result = FindFirstFile(StartDir + "*.*", Data)
Handle = Result
Do While Result > 0
FileName = ASCIIZ2VB(Data.cFileName)
If (Data.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) > 0 Then
If FileName <> "." And FileName <> ".." Then
FileName = FileFind(Name, StartDir + FileName + "\")
End If
ElseIf UCase(FileName) = UCase(Name) Then
FileName = StartDir + FileName
Finish = True
End If
If Finish Then FileFind = FileName: Exit Do
Result = FindNextFile(Handle, Data)
Loop
FindClose (Handle)
End Function

Private Sub Command1_Click()
Dim S As String
S = FileFind(Text1, "C:\")
If S = "" Then
MsgBox ("File not found on disk C: !")
Else
MsgBox ("File is found: " + S)
End If
End Sub

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.