Поиск директорий...

Тема в разделе "WASM.WIN32", создана пользователем valix7, 1 ноя 2007.

  1. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    Привет!
    Как перечислить все папки в указаной дир. с помощью FindFirstFile, FindNextFile...? можно конечно указать например "c:\*.*" и тогда будут перечислены все папки и файлы а потом по dwFileAttributes смотреть если это не папка... но мне надо чтоб ф-кция не перечисляла файлы а только директории! Спасибо
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    никак.
     
  3. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    valix7
    EnumDirTree
     
  4. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    Спасибо!
     
  5. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    Есть еще один вопрос. Допустим есть имя файла, как его сравнить по маске? например "aa*.txt", т.е. в имени файла должно содержатся 'aa' и расширение должно быть .txt. Есть ли winapi для этого? или придется писать самому?
     
  6. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Смотри структуру, которая передается FindFirstFile
     
  7. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    На сколько я помню ФАЙЛ от ДИРЕКТОРИИ отличается 1 битом.
    И по этому
     
  8. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    С FindFirstFile проблемы...
    Если к примеру мы указали маску поиска как 'a*.txt' то по идеи ф-я должна перечилсить все файлы в которых в имени содержится 'a'... а на самом деле она перечисляет только те файлы в имени которых НАЧИНАЕТСЯ на 'a'. Есть какие-то идеи?
     
  9. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    valix7
    Блин, у тебя в структуре валяется имя файла. Ищи там ту букву, какую хочешь, и всего делов...
     
  10. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    Хотелось бы сделать это стандартными способами. Ладно, фиг с ним... Еще один последний вопросик :))) Как в шаблоне указать чтоб ф-я искала файлы, например с расширением .txt и .doc, пробывал так: *.txt;*.doc... но ниче не возвращает
     
  11. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    valix7
    Для FindFirstFile можно указать _одну_ маску. Т.е. либо искать два раза, либо искать один раз, но все (*.*), а в найденном сравнивать расширение с требуемым.
     
  12. valix7

    valix7 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2006
    Сообщения:
    143
    q_q
    мда, фигово...
    проблема в том что у меня едитбокс и в нем пользователь вводит обычную строку поиска как в эксплорере(т.е. с ?,*.xx* ...), значит придется парсить самому....
    Спасибо всем!
     
  13. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    valix7
    Afak повторный (третий, пятый и т.д.) поиск не проблема по скорости (для локальных дисков точно), т.к. ОС закэширует данные, а значит не проблема для пользователя, в крайнем случае цикл FindFirst/FindNext можно вынести в отдельный от UI поток.
     
  14. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    valix7
    Far ищет по нескольким маскам. Если есть навык, время и желание, то посмотри как там сделано.
     
  15. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    FindFirstFile скармливаем шаблон "*.*"
    для каждого найденного файла вызываем PathMatchSpec которому уже передаём "*.txt;*.doc"... не совсем красиво, зато без ручных заморочек со строками.
     
  16. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Зачем так сложно, обычно хватает и такого "*"