|
5 / 5 / 0
Регистрация: 31.03.2010
Сообщений: 71
|
|
Поиск папок с помощью FindFirstFile\FindNextFile24.08.2010, 09:12. Показов 27101. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|