|
5 / 5 / 0
Регистрация: 31.03.2010
Сообщений: 71
|
|
Поиск папок с помощью FindFirstFile\FindNextFile24.08.2010, 09:12. Показов 26758. Ответов 51
Метки нет (Все метки)
0
|
|
| 24.08.2010, 09:12 | |
|
Ответы с готовыми решениями:
51
FindFirstFile и FindNextFile рекурсивный поиск файла FindFirstFile, FindNextFile и setLocale FindNextFile,FindFirstFile,FindClose |
|
|
||||||
| 24.08.2010, 09:31 | ||||||
0
|
||||||
|
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
|
|
| 24.08.2010, 19:13 | |
|
ну и еще - отфильтровывать каталоги "." и ".."
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 10.03.2014, 17:36 | ||||||
|
Andrew_Lvov, а как найти только файлы?
пробовал писать
0
|
||||||
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
|||||||||||
| 10.03.2014, 19:29 | |||||||||||
|
Только папки
0
|
|||||||||||
|
Ушел с форума
|
||
| 10.03.2014, 20:09 | ||
|
Определить можно по флагу FILE_ATTRIBUTE_REPARSE_POINT.
0
|
||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|||||||
| 11.03.2014, 11:00 | |||||||
|
FreeMan108, спасибо) А как искать вложенные папки и файлы в них? Ну чтобы не только в папке по указанному пути а еще и те которые в них.
Добавлено через 8 минут
Конечно есть очень простое решение данной проблемы, просто сделать счётчику для дерикторий -2
0
|
|||||||
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
|||||||
| 11.03.2014, 18:55 | |||||||
0
|
|||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 11.03.2014, 19:19 | |
|
0
|
|
|
121 / 121 / 32
Регистрация: 04.03.2013
Сообщений: 370
|
||||||
| 11.03.2014, 21:58 | ||||||
|
Короче! Вот полный фильтр
0
|
||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 11.03.2014, 22:01 | |
|
0
|
|
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 12.03.2014, 07:04 | |
|
qwertun, 3 варианта решения:
1 - В свойствах проэкта не Юникод А Анси выберите кодировкой. 2 - Добавьте L("..") 3 - lstrcmp(fd.cFileName,"..")!=0
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|||||||||||||
| 12.03.2014, 10:44 | |||||||||||||
|
Добавлено через 12 минут Начну со вступления. Я пишу (ну "я пишу" это немного не то что нужно было бы сказать, скорее переделываю чужой) файловый менеджер. Я хожу по папачкам и на 1 клик рядом появляется инфа про папки или файлы. И проблема в том что в переменной cFileName находится имя папки в которой я нахожусь, а не название той, которая выделена. Допустим если я зашёл в папку "D:\Programmes" и 1 раз кликаю на папку с названием "." то в cFileName будет находится не ".", а "Programmes". У меня есть переменная szBuf[] типа wchar_t где хранится весь путь к папке, на которую кликнули, в данном случае это "D:\Programmes\." Добавлено через 11 минут Добавлено через 3 минуты Так вроде норм
Izual, А Вы случайно не знаэте как посчитать количество вложенных файлов и папок? Как найти количество папок и файлов в папке, я знаю, но тот способ, который использую, я не и дёт дальше папку путь к которой указан. Например возьмём всё ту же папку "D:\Programmes". Есть в ней например 10 папок и 3 файла, а в тех папках еще папки в которых еще папки и файлы. Так вот способ который у меня покажет 10 папок и 3 файла и всё. Его код
Как мне его модернизировать или какой другой использовать? Погуглив нашёл только такой в разных вариантах записи.
0
|
|||||||||||||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 12.03.2014, 15:30 | |
|
qwertun, ну если есть - я не знаю, да и мне лично проще собственный алгоритм написать)
Алгоритм в принципе прост, вам же дали число - 10 папок, берите циклом эти папки и штрудируйте их на содержимое, естественно с учётом что в них тоже могут быть папки и ещё глубже, т.е. проще будет даже функцию отдельную написать чтоб сунуть её в цикл, т.е. при условии что файл - не файл, а папка - то выполняем функцию, и до конца... Итоговый подчёт кол-ва файлов глобальной INT переменной... В общем задачка интересная, реализация даст пищу для ума, дерзайте)
1
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 18.03.2014, 00:29 | ||||||
|
Izual, помогите пожалуйста)
Я попытался сделать функцию для подсчёта количества вложенных файлов. Алгоритм, по которому я пытался написать функцию, которая кстати рекурсивная: в окне файлового менеджера кликаем на необходимую папку и вызывается функция, которая в папке на которую кликнули если находит файл делает +1 к кол-ву файлов, а если папку, то сама себя-же вызывает, а как аргументы передаёт переменную hStaticTmp нужную для передачи предыдущей папке при первом вызове функции, название выбраной папки / найденной функцией, небольшую чекалку которую я добавил для проверки условия чем была вызвана функция кликом мышки или собою же, кол-во файлов, кол-во папок, размер папки, предыдущая папка. Короче говоря, функция работает не так как хотелось бы. Проблема в переменной показывающей предыдущую папку. Например: есть несколько папок в папке D:\test\1\11 D:\test\1\12 И вот что мы имеем: Текущая папка D:\test (на неё кликнули мышкой) Предыдущая папка NULL ----- Текущая папка D:\test\1 (функция нашла папку и вызвала сама себя перейдя в эту папку) Предыдущая папка D:\test ----- Текущая папка D:\test\1\11 (функция нашла папку и вызвала сама себя перейдя в эту папку) Предыдущая папка D:\test\1 ----- А вот тут проблемка! Текущая папка D:\test\1\12 (по идее должна быть) Текущая папка D:\test\1\11\12 (как в программе) Предыдущая папка D:\test\1\11 Вобщем именно проблема с возвратом в предыдущую папку. Люди добрые, помогите) Кидаю код
0
|
||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 21.03.2014, 14:40 | ||||||
|
Я написал код для подсчёта кол-ва вложенных файлов и папок!
Однако есть одно НО! Если в какой-то папке будет папок больше чем MAX_PATH, т.е. 260 прога будет работать не правильно(((
Чтоб не было ограничения в 260 папок я хотел вместо DirList[MAX_PATH][MAX_PATH] сделать vector<wchar_t[MAX_PATH]>, но в векторе не может быть тип массива. Тогда я сделал структуру с единственным полем типа wchar_t name[MAX_PATH] и сделал vector<"имя структуры">, но при попытке записать данные в структуру мне прога сказала что структура ПУСТА и полей в ней НЕТ! а когда я поменял его тип на простой char то всё стало норм, но поскольку у меня есть привязка к Юникоду, то мне нужно преобразовать вчарт в чар (с этим проблема, я нашёл как, но нифига не понял и у меня нифига не получилось) и потом обратно с чар в вчарт (тут такая-же проблема).
0
|
||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 22.03.2014, 14:52 | ||||||
|
Во-первых, код можно укоротить
Например если в папке 187 вложенных файлов и 6 папок то всё ок, а если файлов 28654 а папок 3111 то уже вылет! Добавлено через 55 секунд Помогите исправить проблему с переполнением стека, на ограничение можно забить, я просто поставлю его например 1000000
0
|
||||||
|
Ушел с форума
|
||
| 22.03.2014, 15:52 | ||
|
стековых переменных (т.к. на каждом шаге рекурсии на стеке создаются их копии).
0
|
||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 22.03.2014, 16:12 | |
|
Убежденный, да собственно там только одна переменная - путь к папке, уменьшение её размера не к чему хорошему не приведёт, т.к. путь может быть достаточно длинным.
0
|
|
| 22.03.2014, 16:12 | |
|
Помогаю со студенческими работами здесь
20
Рекурсивный обход (FindFirstFile, FindNextFile) WIN32 FindFirstFile и FindNextFile возвращают некорректное время FindNextFile
Функция FindFirstFile Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|