Страница: 1 |
Страница: 1 |
Вопрос: Pattern или Ось гонят... ну или я....
Добавлено: 27.09.04 00:12
Автор вопроса: Neco | Web-сайт:
Ещё раз здрасте.
Что за фигня?
Проблема с поиском файлов.
По сути там FindFirst и остальное глючит, но для демонстрации возьмите File1, установите у него Pattern = "*1.txt" и Path="c:\".
Теперь запустите прогу и если у вас в корневом каталоге диска валяется только вами созданный "Текстовый документ.txt", то он отобразится в окне контрола!
Какого ФИГА?
Кто-нибудь объясните прикол, пожалуйста...
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #1
Добавлено: 27.09.04 19:18
Ну попробуй через Dir...
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 27.09.04 22:05
А где он должен отобразится?
Номер ответа: 3
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #3
Добавлено: 27.09.04 23:12
Да он вообще не должен появляться там. Pattern же "*1.txt"! Где тут "Текстовый документ"? Набей в обычном поиске *1.txt и винда его не найдёт. И правильно сделает.
Номер ответа: 4
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #4
Добавлено: 28.09.04 07:26
???
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 28.09.04 08:00
Neco, а о каком контроле или о каком примере речь-то идет? Может упомянуто вскользь, но я что-то не заметил. Отсюда непонимание...
Номер ответа: 6
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #6
Добавлено: 28.09.04 13:53
Да похоже на FileListBox...
Номер ответа: 7
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #7
Добавлено: 28.09.04 22:05
Да-да. Именно FileListBox.
Просто у него по умоланию имена File1, File2... поэтому не стал уточнять.
Кстати, если кто когда-нибудь писал рекурсивный обход папок через FSO (а это точно делал boevik - его код), то обратите внимание, что и FileSystemObject тоже ошибается, включая данные имена в список подходящих по маске. Даже больше. К примеру мой код (через API) находит 4560 файлов с заданной маской "*1.txt" в одной из моих папок. После этого делаю тоже самое через FSO она находит ~4700.
Видосовский пёсик нашёл ровно 500!!!
Я больше верю пёсику.
Вот приблизительный код Боевика (с моими дополнениями):
[CODE]Public Sub FindFile(ByVal Path As String, ByVal FileName As String, ByVal colPath As Collection)
Dim objFileSystem As Object
Dim objFolder As Object
Dim objSubFolder As Object
Dim Ret As String
'Debug.Print Path
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFileSystem.GetFolder(Path)
Set objSubFolder = objFolder.SubFolders
'погружение в рекурсию
For Each objFolder In objSubFolder
FindFile Path & objFolder.Name & "\", FileName, colPath
Next
'поиск файла
'Ret = Dir(Path & FileName)
Box.Path = Path
Box.Pattern = FileName
For i = 0 To Box.ListCount - 1
colPath.Add Path + Box.List(i)
colFileName.Add Box.List(i)
Next i
DoEvents
End Sub[/CODE]Вопрос всё ещё открыт!
ЧТО МНЕ ДЕЛАТЬ?
Кто-нибудь проверьте, пожалуйста, у себя. Хотя бы прикол с File1. Может у меня ось гонит? А?
P.S.
Вот блин!!!
Попробовал перепроверяться после нахождения с помощью Dir'а (по совету Александра) - та же фигня. Ощущение, что маска на самом деле задаётся совсем не знаком умножения, а знак умножения означает что-то другое...
P.S.S.
Уф. Ну хотя бы у диалоговых окон всё тип-топ...
Хотя, имхо, это та же псина.
Номер ответа: 8
Автор ответа:
shuffle
Администратор
ICQ: 201502381
Вопросов: 15
Ответов: 737
Профиль | | #8
Добавлено: 28.09.04 23:49
Это глюк VB, который заключается в том, что он показывает все файлы,
длинна имени которых больше 8 символов (без расширения, ессно), не
смотря на маску.
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 29.09.04 00:27
А лекарство от всех глюков VB но не от глюков системы: FindFist(Next)File
правдо как оказалось они в каждой версии ОС называются по-разному... а это всего-лишь псевдонимы...
Номер ответа: 10
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #10
Добавлено: 29.09.04 23:00
Я это первоначально делал на FindFirst 8)
Теперь уже написал тот же код на С++ - та же хрень.
Ничего не выходит. Неужели надо писать собственный уточнитель имени файла? Это сильно замедлит алгоритм... 8(