|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 25, 2004 20:23:48 Посоветуйте плиз, через какую функцию искать... Просто даж не знаю с чего начинать... |
|
|
Дата: Июл 25, 2004 22:09:23 Flasher Начни с FindFirstFile |
|
|
Дата: Июл 26, 2004 04:59:12 · Поправил: q_q Flasher w2k+ Можно создать текстовый файл, например dir c:\ /S /B /AD | find "Window" > result.txtи разобрать его программно. |
|
|
Дата: Июл 26, 2004 05:09:37 q_q Это будет гораздо геморнее, чем FindFirst-FindNext |
|
|
Дата: Июл 26, 2004 05:12:58 jekyll Читать построчно из файла - это больший гемор, чем организовывать рекурсию? |
|
|
Дата: Июл 26, 2004 05:42:44 q_q У любой вещи есть 2 стороны, так для твоего способа нужно писать файл, для моего - стек. Читать построчно из файла - это больший гемор, чем организовывать рекурсию? Ну операций точно больше требуется =) |
|
|
Дата: Июл 26, 2004 05:48:42 q_q Почему обязательно рекурсия? Есть более эффективные пути, которые очевидно и реализованы в системной утилите find. |
|
|
Дата: Июл 26, 2004 10:50:57 Кажись замутил через FindFirstFile\FindNextFile. Но тут же возник другой вопрос: а что если я знаю только часть названия папки? Например: irc - но их-же много, mirc,Rusmirc,ircd, и т.д. Есть идеи как сравнить? |
|
|
Дата: Июл 26, 2004 11:48:21 Flasher А маска? Хотя в случае mirc,Rusmirc,ircd маска не поможет - *irc.* (equ *.*) - выдаст все файлы и каталоги, если я не ошибаюсь и тебе нужно будет искать подстроку в строке. |
|
|
Дата: Июл 26, 2004 12:55:29 Quantum Почему обязательно рекурсия? Есть более эффективные пути ... реализованы в системной утилите find. ;-) Вообще-то find ищет строчку, в потоке, содержащем все каталоги на заданном диске. Поток предоставляет команда dir, следовательно, она содержит рекурсию или более эффективные пути. jekyll Сначала рекурсию или более эффективные пути (С) Quantum, потом нужно будет искать подстроку в строке, а потом собственно анализ найденного. Я всего-то и предложил не делать рутинную работу, а озадачиться собственно анализом. С маской, кстати, достаточно сделать так dir c:\*windows* /S /B /AD > result.txt |
|
|
Дата: Июл 26, 2004 16:10:09 Flasher а что если я знаю только часть названия папки? Чтобы определить, та ли это папка, которую ищешь, нужны доп. данные. Проверь соответствие этих данных каждому найденному объекту. Если каких-то дополнительных сведений нет, кроме нескольких букв, то твоя задача (поиск определённой папки) невыполнима. Объекты не являющиеся папками, можно сразу отсечь или через .dwFileAttributes (это кажется проще) или через SHGetFileInfo. В поле .szTypeName содержится "Папка", "Точечный рисунок", "Текстовый документ" и т.д. |
|
|
Дата: Июл 26, 2004 19:08:51 Придётся каждое название сравнить, это долго, но думаю удастся аптимизировать. Токо подскажите плиз как узнать, есть-ли в строке "mircd" - слово irc? примерно так, да ? .data
Stroka db "mircd",0
.code
lea esi,Stroka
cld
scan:lodsb
cmp al,"irc"
je da
jmp scan
da: |
|
|
Дата: Июл 26, 2004 21:20:15 q_q А я имел в виду не find.exe, а системный процесс *find* (ускоряет поиск файлов путём кеширования, возможно). |
|
|
Дата: Июл 26, 2004 22:42:50 Flasher Токо подскажите плиз как узнать, есть-ли в строке "mircd" - слово irc? Не понял, зачем это узнавать? Подстрока содержится в имени файла, если FindFirstFile/FindNextFile с входной строкой "*irc*" вернула значение, отличное от INVALID_HANDLE_VALUE. Можно конечно проверить, чтобы убедиться, что FindFirstFile тебя не обманывает, но imho, это лишнее. А вообще можно так проверить: invoke InString,1,ADDR szMainString,ADDR szSubString возвращает позицию первого вхождения подстроки. Если вхождения нет, возвращает ноль. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.085 |