|
5 / 5 / 0
Регистрация: 31.03.2010
Сообщений: 71
|
|
Поиск папок с помощью FindFirstFile\FindNextFile24.08.2010, 09:12. Показов 27289. Ответов 51
Метки нет (Все метки)
0
|
|
| 24.08.2010, 09:12 | |
|
Ответы с готовыми решениями:
51
FindFirstFile и FindNextFile рекурсивный поиск файла FindFirstFile, FindNextFile и setLocale FindNextFile,FindFirstFile,FindClose |
|
Ушел с форума
|
|||||||
| 22.03.2014, 16:32 | |||||||
|
Добавьте в функцию Dir (рядом с объявлением DirList) такой фрагмент:
которое съедается на каждом шаге рекурсии. Размер стека по умолчанию равен одному мегабайту. Разделив 1 мегабайт на полученное число, получите ограничение на количество вложенности. Поиск по файловой системе лучше делать нерекурсивным, тогда не будет ограничений, связанных с рекурсией. Добавлено через 55 секунд Даже это приведет к ощутимому выигрышу в глубине возможной рекурсии.
0
|
|||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 22.03.2014, 16:34 | |
|
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 22.03.2014, 16:39 | ||||||
|
Убежденный, сделал так
0
|
||||||
|
Ушел с форума
|
|
| 22.03.2014, 17:14 | |
|
Ну вот, 130 килобайт стековых переменных тратится на каждую итерацию.
1 мегабайт резерва / 130 кило - это получается примерно 7 итераций. Значит, поиск обломится на папке с такой глубиной вложенности. Можете сами проверить и убедиться.
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|
| 22.03.2014, 17:16 | |
|
Убежденный, Вы говорили что это можно сделать без рекурсии. Как?
0
|
|
|
Ушел с форума
|
|||||||
| 22.03.2014, 17:20 | |||||||
|
Ваш код в плане использования ресурсов стека эквивалентен такому:
Берем исходную папку, находим в ней все файловые объекты. Каждую найденную папку добавляем в список. Сам список держим в виде файла на диске, что позволяет ему быть практически неограниченного размера. Когда перечисление заканчивается, смотрим, была ли добавлена хотя бы одна папка в список. Если есть - выполняем также проход по ней. И так далее, пока на очередном витке не окажется, что ничего нового в список не добавлено. В этом случае поиск завершен.
0
|
|||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||
| 22.03.2014, 17:24 | ||
|
0
|
||
|
Ушел с форума
|
|
| 22.03.2014, 17:47 | |
|
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||
| 22.03.2014, 18:59 | ||
|
Добавлено через 1 минуту Конечно есть вариант не перезаписывать файл, а всё подряд туда писать, но если так, то в нём будет полнейший балаган в котором невозможно будет ничего найти. Добавлено через 1 час 7 минут Я ДНО!!!!!!!!! Массив DirList там нафиг не нужен! Он просто остался с прошлого варианта попытки посчитать количество папок и файлов! Я его снёс и всё норм! 138 гиг занятого места 100k+ фалов и почти косарь папок посчитало и збс)))
0
|
||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 22.03.2014, 19:02 | |
|
qwertun, ну и что же идеал достигнут? Код в студию =)
0
|
|
|
Ушел с форума
|
|||
| 22.03.2014, 19:04 | |||
|
Все, что в него уже записано ранее, остается на месте.
0
|
|||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 22.03.2014, 19:04 | ||||||
|
Izual, Это конечно не окончательный вариант (оконное приложение с листвью и прочим), а только консольное приложение, но оно работает)))
1
|
||||||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 22.03.2014, 19:13 | |
|
qwertun, это и требовалось, сам алгоритм, а окошки сделают сами те кто нуждаются. Спасибо =)
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||
| 22.03.2014, 19:14 | ||
|
Осталось только копипастом в другой проект перенести
0
|
||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 14.04.2014, 10:17 | ||||||
|
Ребята! Если тут есть кто живой откликнетесь пожалуйста!
![]() Я столкнулся с небольшой проблемой при прикручивании кода выше в оконное приложение. В функции которая считает кол-во файлов и папок есть рекурсия из-за этого все переменные с путями я решил сделать вида
0
|
||||||
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
|||||||||||
| 14.04.2014, 10:22 | |||||||||||
|
Забыл кинуть код
Бывает ![]()
0
|
|||||||||||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 14.04.2014, 23:08 | |
|
qwertun, getlasterror вызывай. Логируй в файл операции... Может найдёш в чём проблема и почему.
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||
| 01.05.2014, 16:46 | ||||||
|
Izual, надеюсь на Вашу помощь.
Вобщем делаю ту часть программы которая должна отвечать за оповещения пользователя при изменении содержимого диска. Впринцыпи она это делает, но есть одно НО: программа ничего больше не делает кроме ожидания изменений. Код:
З.Ы. Чтоб не поганить основной проект сделал отдельной прожкой.
0
|
||||||
|
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
|
| 01.05.2014, 17:12 | |
|
qwertun, я в общем то и сам нуб =)
Что то я не понял, что значит в фоновом режиме?.. Вообще у вас получается каждое мгновение вызывается функция ReadDirectoryChanges в безконечном while цикле. Вот я бы это изменил, по идее же(ну я предполагаю) что работа функции должна быть только когда что то произошло, т.е. как в оконной процедуре. Не знаю, может какой то хук(чтоб перехватить сообщение изменения) есть на подобное... Думаю вам стоит побольше почитать, вот например http://msdn.microsoft.com/en-u... s.85).aspx там есть ссылка на "изменение в журнале"... может там что то есть путное.
0
|
|
|
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
|
||||||||||||||||||||||
| 01.05.2014, 17:41 | ||||||||||||||||||||||
|
Если посмотреть в код то там есть строки
Добавлено через 6 минут меня осенило!!!!
0
|
||||||||||||||||||||||
| 01.05.2014, 17:41 | |
|
Рекурсивный обход (FindFirstFile, FindNextFile) WIN32 FindFirstFile и FindNextFile возвращают некорректное время FindNextFile
Функция FindFirstFile Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|