Помогите создать поиск без контролов

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
mihlon
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 29.10.2008 (Ср) 23:57

Помогите создать поиск без контролов

Сообщение mihlon » 03.02.2010 (Ср) 16:31

Подскажите плиз исправить ошибки. Я пытаюсь создать свой поиск по папкам для начала.

[Хакер] :: Код вырезан. Код надо оформлять правильно. А в следующий раз будет ещё и наказание.

Если же я уберу строку On Error Resume Next, то появляется ошибка № 52 "Bad file name of number"
Буду очень признателен за помощь, может у кого-нибудь есть другие варианты алгоритма поиска? будет оч полезно)

mihlon
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 29.10.2008 (Ср) 23:57

Re: Помогите создать поиск без контролов

Сообщение mihlon » 03.02.2010 (Ср) 16:53

Подскажите плиз исправить ошибки. Я пытаюсь создать свой поиск по папкам для начала.
Код: Выделить всё
Private Sub Search(patch As String)
Dim strPath As String, strName As String, i As Integer, flname() As String

strPath = patch
strName = Dir(strPath, vbDirectory)

On Error Resume Next

Do While strName <> ""
    If strName <> "." And strName <> ".." Then
        If (GetAttr(strPath & strName) And vbDirectory) = vbDirectory Then       
            ReDim Preserve flname(i)
            flname(i) = strPath & strName & "\"
            i = i + 1
        End If
    End If
   
    strName = Dir
Loop

If i Then
    For i = 0 To UBound(flname)
        Search flname(i)
    Next i
End If
End Sub
Private Sub Form_Load()
Search "C:\"
End Sub

Если же я уберу строку On Error Resume Next, то появляется ошибка № 52 "Bad file name of number"
Буду очень признателен за помощь, может у кого-нибудь есть другие варианты алгоритма поиска? будет оч полезно)
Последний раз редактировалось mihlon 03.02.2010 (Ср) 16:55, всего редактировалось 1 раз.

mihlon
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 29.10.2008 (Ср) 23:57

Re: Помогите создать поиск без контролов

Сообщение mihlon » 03.02.2010 (Ср) 16:54

Извините пожалуйста, я не частый здесь гость, поэтому не успел узнать всех тонкостей.

Diamock
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 388
Зарегистрирован: 26.10.2009 (Пн) 4:19
Откуда: Кемерово

Re: Помогите создать поиск без контролов

Сообщение Diamock » 03.02.2010 (Ср) 17:20

Буду очень признателен за помощь, может у кого-нибудь есть другие варианты алгоритма поиска?

Уважаемый Mihlon. Указав в строке поиска Яндекса: "Рекурсивный поиск", я нашёл готовый код в первом десятке ссылок.
In der Beschrankung zeigt sich erst der Meister
Графоманю...

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Re: Помогите создать поиск без контролов

Сообщение Dmitriy2003 » 03.02.2010 (Ср) 17:49


qwertyhp
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 156
Зарегистрирован: 07.10.2009 (Ср) 15:02
Откуда: Москва

Re: Помогите создать поиск без контролов

Сообщение qwertyhp » 04.02.2010 (Чт) 18:22

2mihlon: У меня Ваш код выдал ошибку 52, когда наткнулся на некорректное имя сохрвнённой IE6 странички - имя содержит "?" и не читается и не удаляется. Глюк файловой системы (интересно - а что думает сама MSoft по поводу подобных сохранений, а заодно - по поводу попыток IE сохранять сверхдлинные имена файлов, даже не заморачиваясь на сервис по их укорочению?).
Ошибка с кодом 53 была выдана при запросе "Search "C:\WINDOWS"" - потребовался правый слэш.
А так вроде без нареканий. mihlon, попробуйте код на другой папке.
Пятачок Forever! :)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Помогите создать поиск без контролов

Сообщение Andrey Fedorov » 05.02.2010 (Пт) 14:02

Держите примерчик рекурсивного поиска файлов по маске:

Код: Выделить всё
Option Explicit

Public Sub Main()
    Dim mНайденныеФайлы() As String, i As Long
    Dim s As String
   
    FindFileInFolder CreateObject("Scripting.FileSystemObject").GetFolder(Environ("ProgramFiles") & "\Internet Explorer"), _
                        "i*.exe", _
                        mНайденныеФайлы, i
    Debug.Print
    If i Then
        Debug.Print "Найдено " & i & " Файлов"
        For i = 0 To UBound(mНайденныеФайлы)
            Debug.Print "Файл " & i + 1 & vbTab & mНайденныеФайлы(i)
        Next i
    Else
        Debug.Print "Файлов не обнаружено"
    End If
End Sub

Public Sub FindFileInFolder(foo As Object, sШаблонПоискаФайла As String, mНайденныеФайлы() As String, Optional iCountFiles As Long = 0)
    Dim fo As Object, f As Object
   
    On Error Resume Next
    If iCountFiles <= 0 Then Erase mНайденныеФайлы: iCountFiles = 0
    For Each f In foo.Files
        If f.Name Like sШаблонПоискаФайла Then
            iCountFiles = iCountFiles + 1
            ReDim Preserve mНайденныеФайлы(iCountFiles - 1)
            mНайденныеФайлы(iCountFiles - 1) = f.Path
        End If
    Next f
    For Each fo In foo.SubFolders
        FindFileInFolder fo, sШаблонПоискаФайла, mНайденныеФайлы, iCountFiles
    Next fo
End Sub
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Mail.ru [бот], Yandex-бот и гости: 21

    TopList