Viper писал(а):AHDPE@ich, начни с Dir
alibek писал(а):Какие самостоятельные действия были для этого предприняты?
Alexanbar писал(а):Dir нельзя вызывать рекурсивно
BION писал(а):Вот пример из VB5, поиск файлов по маске всё чисто на контролах , и ничего не надо мудрить.
SLIM писал(а):BION писал(а):Вот пример из VB5, поиск файлов по маске всё чисто на контролах , и ничего не надо мудрить.
[ОФФ]Не знаю как кого, но меня немного покарежило после фразы "ничего мудрить не надо"[/ОФФ]
А если по делу, то ты предлагаешь теперь если поадобится отобразить список папок постоянно "пихать" в приложение эти контролы? Которые использовались еще в 98 (а помоему и раньше).
Мне кажется здесь задачу нужно решить раз и навсегда. Так чтобы даже если через пяток лет нужно было подключить модуль с этой ф-ей и использовать где хочешь.....Зачем легкий путь то?
Dim fso, drv, DriveLetter, lcount&
Sub Walk(objFolder)
Dim fl, fld
For Each fl In objFolder.Files
lcount = lcount + 1
Me.Caption = lcount
'txtResult.Text = txtResult.Text + fl.Name + _
'vbTab + DriveLetter + Mid(fl.Path, 3, Len(fl.Path) - Len(fl.Name) - 2) + vbCrLf
'txtResult.SelStart = Len(txtResult.Text)
DoEvents
Next
For Each fld In objFolder.SubFolders
Walk fld
DoEvents
Next
End Sub
Private Sub cmdSearch_Click()
DriveLetter = "d:"
lcount = 0
Set fso = CreateObject("Scripting.FilesystemObject")
Set drv = fso.GetFolder(DriveLetter)
Walk drv
Set drv = Nothing
End Sub
Что за пример? В чем его громоздкость? Долго работает в среде или в готовом экзешнике?AHDPE@ich писал(а):Нашел пример функции с Dir'ом, но она очень громоздкая и работает действительно долго.
Viper писал(а):Что за пример? В чем его громоздкость? Долго работает в среде или в готовом экзешнике?AHDPE@ich писал(а):Нашел пример функции с Dir'ом, но она очень громоздкая и работает действительно долго.
BION, отвечать, ради того, что бы ответить не стоит. Оба твоих примера являются примерами того, как делать не надо! Особенно вариант на контролах.
И что, MS вне критики? Не стоит все повторять за MS вслепую.BION писал(а)::!: Задело
1. Про контролы достали... , это не я придумал а MS!
Свой вариант я предложил в самом начал - использование Dir. Если бы автор поискал по форуму, он легко бы нашел вполне рабочие реализации. FSO не устраивает тем, что он является прстой оберткой над API.BION писал(а):2. Пардон, твой критичниый «ответ» тоже мало чем полезен, будь продуктивнее (Професьён де фуа) — предложи свой вариант. И потом, чем тебя FSO не учстроил?
Будем посмотреть. Первый глюк уже обнаружил - при попытке найти файлы с маской "*.*" в папке "C:\", прога надолго задумалась, а потом выдала ошибку переполнения.BION писал(а):3. Меж тем, я поспешил найти третий вариант, на API. Это устроит предводителя дворянства?
Жду критики!
Viper писал(а):Будем посмотреть. Первый глюк уже обнаружил - при попытке найти файлы с маской "*.*" в папке "C:\", прога надолго задумалась, а потом выдала ошибку переполнения.
"Да разве ж это ошибка? Видала я ошибки, рядом с которыми эта — документированная возможность." © Черная Королева.BION писал(а):Viper писал(а):Будем посмотреть. Первый глюк уже обнаружил - при попытке найти файлы с маской "*.*" в папке "C:\", прога надолго задумалась, а потом выдала ошибку переполнения.
FileCount As Integer => 32767 => overflow
Хочешь сказать, что это нормально? 32 тыщи файлов маловато для современного компа.BION писал(а):Viper писал(а):Будем посмотреть. Первый глюк уже обнаружил - при попытке найти файлы с маской "*.*" в папке "C:\", прога надолго задумалась, а потом выдала ошибку переполнения.
FileCount As Integer => 32767 => overflow
Viper писал(а):Хочешь сказать, что это нормально? 32 тыщи файлов маловато для современного компа.BION писал(а):Viper писал(а):Будем посмотреть. Первый глюк уже обнаружил - при попытке найти файлы с маской "*.*" в папке "C:\", прога надолго задумалась, а потом выдала ошибку переполнения.
FileCount As Integer => 32767 => overflow
Viper писал(а):2 BION. После легкой обработки напильником получилось следующее. Найдите два отличия. Можно конечно повозиться подольше, например, найденные файлы помещать вначале в массив, а уж потом в ListBox. Но на это времени юк.
Дык! Вперед! Глядишь в кирпичи поместим! Главное, обрати внимание на разницу исходного кода и конечного.BION писал(а):Ну вот и славно
Можно биляткчку или класец наваять.
У меня по любой маске все что надо находит.BION писал(а):2 Viper.
Стоп, чёт он у тя не ищет по маске, допустем подефолту "*.mp4" — пустой лист, по маске "*.*" вроде находит. Чет перемудрил
Viper писал(а):У меня по любой маске все что надо находит.BION писал(а):2 Viper.
Стоп, чёт он у тя не ищет по маске, допустем подефолту "*.mp4" — пустой лист, по маске "*.*" вроде находит. Чет перемудрил
Действительно! Не находит во вложенных папках. Чуток перемудрил.BION писал(а):Странно, у меня нет. Либо находит, но не все.Viper писал(а):У меня по любой маске все что надо находит.BION писал(а):2 Viper.
Стоп, чёт он у тя не ищет по маске, допустем подефолту "*.mp4" — пустой лист, по маске "*.*" вроде находит. Чет перемудрил
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 78