Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: СРОЧНО ТРЕБУЕТСЯ ПОМОЩЬ!!!! Добавлено: 17.03.05 10:15  

Автор вопроса:  Leon
СРОЧНО ТРЕБУЕТСЯ ПОМОЩЬ!!!!
Как сделать поиск файла по части имени файлы???

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Novichek



Вопросов: 19
Ответов: 60
 Профиль | | #1 Добавлено: 17.03.05 12:28
Используй рекурсивный поиск
Private Sub SearchForFolders(fName As String, Path As String, File As String)
If StopSearch = True Then Exit Sub
Dim Atr As Integer
Dim hFnd As Long
Dim WFD As WIN32_FIND_DATA

hFnd = FindFirstFile(Path & fName, WFD)
If hFnd = INVALID_HANDLE_VALUE Then Exit Sub
SearchForFiles File, Path
Do
Atr = (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY)
If TrimNull(WFD.cFileName) <> "." And TrimNull(WFD.cFileName) <> ".." Then
If Atr > 0 Then
DoEvents
SearchForFolders fName, Path & TrimNull(WFD.cFileName) & "\", File
End If
End If
Loop While FindNextFile(hFnd, WFD)
FindClose hFnd
End Sub

Private Sub SearchForFiles(fName As String, Path As String)
If StopSearch = True Then Exit Sub
Dim Atr As Integer
Dim hFnd As Long
Dim WFD As WIN32_FIND_DATA

hFnd = FindFirstFile(Path & fName, WFD)
If hFnd = INVALID_HANDLE_VALUE Then Exit Sub
Do
Atr = (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY)
If TrimNull(WFD.cFileName) <> "." And TrimNull(WFD.cFileName) <> ".." Then
If Atr > 0 Then
lstFiles.AddItem "[" & Path & TrimNull(WFD.cFileName) & "]"
Else
lstFiles.AddItem Path & TrimNull(WFD.cFileName)
End If
End If
Loop While FindNextFile(hFnd, WFD)
FindClose hFnd
End Sub



Использование: ищем все txt файлы на c:\ во всех подкаталогах (*.*)
SearchForFolders ( "*.*", "c:\", "*.txt";)

Ответить

Номер ответа: 2
Автор ответа:
 Novichek



Вопросов: 19
Ответов: 60
 Профиль | | #2 Добавлено: 17.03.05 12:29
не забудь добавить на форму листбокс (lstFiles)

Ответить

Номер ответа: 3
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #3 Добавлено: 17.03.05 13:08
Блин! "Яндекс - найдется все"
Кому чтото нужно он пишет "Быстрее, братцы, - погибаю-ю". Назвал бы тему
"Поиск файлов по маске"

Проси в следующий раз поточнее. Какой язык программирования?

Option Explicit
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10

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 Sub InterateObject(Source As String)
Dim objName As String
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer

    Cont = True
    hSearch = FindFirstFile(Source & "*", WFD)
    If hSearch <> INVALID_HANDLE_VALUE Then
        Do While Cont
            objName = Left(WFD.cFileName, InStr(WFD.cFileName, Chr(0)) - 1)
            If Not (objName = "." Or objName = "..";) Then
                If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0
Then
                    List1.AddItem Source & objName
                Else
                    InterateObject Source & objName & "\"
                End If
            End If
           Cont = FindNextFile(hSearch, WFD)
        Loop
        Cont = FindClose(hSearch)
    End If
End Sub

Private Sub Command1_Click()
Dim dblTimer As Double
    dblTimer = Timer
    List1.Clear
    InterateObject "C:\"
    Debug.Print Round(Timer - dblTimer, 2)
End Sub


Это самый быстрый метод который я знаю
В помеченной строке можешь сделать фильтр по маске (точно не знаю как)

Ответить

Номер ответа: 4
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #4
Добавлено: 17.03.05 13:17
Да, по моему в правилах запрещены такие имена тем.
Могут и череп влепить.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам