Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.59/32: Рейтинг темы: голосов - 32, средняя оценка - 4.59
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
1

Получение списка файлов в определённой папке

24.03.2012, 14:51. Показов 6296. Ответов 17
Метки нет (Все метки)

Как получить список всех файлов в определённой папке, включая подпапки, без использования рекурсии.

Просто хочется в коде написать функцию Win32 API, и пусть эта функция сама ищет - всё-таки не первый день программирование уже есть: должны же быть какие-нибудь уже разработанные профессиональными программистами чудо-функции.

И ещё хотелось бы, чтобы в разделе Win32 API закрепили тему, где бы была ссылка на сайт с полным перечнем Win32 API функций, а то редко с ними сталкиваешься и забываешь потом, где искать эти сайты.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2012, 14:51
Ответы с готовыми решениями:

Получение количества файлов в определенной папке и ее подпапках (не учитывая сами папки)
Доброго времени суток! У меня возник вопрос: как получить кол-во файлов в определенной папке и в ее...

Как организовать получение списка путей файлов в папке с подпапками?
Привет! Нужно получиться список всех файлов (путь + имя файла) определённого расширения в...

Получение списка всех файлов, находящихся в определённой директории на определённом компьютере
Всем привет! Нужен скрипт, который бы перечислял бы мне список всех файлов в определенной...

Список файлов в определенной папке
Подскажите пожалуйста!!! Есть скрипт: <?php $sPath = '.'; $dDir = opendir($sPath); ...

17
Эксперт С++
7175 / 3234 / 79
Регистрация: 17.06.2009
Сообщений: 14,164
24.03.2012, 15:01 2
и пусть эта функция сама ищет
А если такой функции в Win32 API нет ?
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
24.03.2012, 15:03  [ТС] 3
odip,
получается, что такой функции Win32 API нету? Я правильно понял?
0
2784 / 1295 / 167
Регистрация: 28.10.2011
Сообщений: 4,790
Записей в блоге: 6
24.03.2012, 15:19 4
Цитата Сообщение от Busine2012 Посмотреть сообщение
без использования рекурсии
Чем же она вам не понравилась?
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
24.03.2012, 15:38  [ТС] 5
Цитата Сообщение от locm Посмотреть сообщение
Чем же она вам не понравилась?
сложно вспоминать, как эта рекурсия делается, если редко её используешь.

Да и по идее должен же быть инструмент уже готовый по поиску файлов.
0
2784 / 1295 / 167
Регистрация: 28.10.2011
Сообщений: 4,790
Записей в блоге: 6
24.03.2012, 16:28 6
Цитата Сообщение от Busine2012 Посмотреть сообщение
сложно вспоминать, как эта рекурсия делается
А что там помнить? Это вызов процедуры/функции из самой же себя.
Код
Procedure Test()
  Test()
EndProcedure
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
24.03.2012, 16:31  [ТС] 7
locm,
в голове тяжело укладывается эта рекурсия - сначала одна папка просматривается, затем внутри неё др. папки, потом возврат из вложенных папок в основную.
0
2784 / 1295 / 167
Регистрация: 28.10.2011
Сообщений: 4,790
Записей в блоге: 6
24.03.2012, 23:45 8
Цитата Сообщение от Busine2012 Посмотреть сообщение
в голове тяжело укладывается эта рекурсия - сначала одна папка просматривается, затем внутри неё др. папки
Честно не понимаю что сложного.
Набросал небольшой пример рекурсивного просмотра содержимого папок (не WinAPI, но думаю что смысл понятен).
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Procedure ScanDisc(Dir.s)
  
   DirID = ExamineDirectory(#PB_Any, Dir, "*.*")  
   If DirID 
     While NextDirectoryEntry(DirID)
       
      EntryName.s=DirectoryEntryName(DirID) 
       
       If EntryName = "." Or EntryName = ".." 
        Continue 
       EndIf 
       
       If DirectoryEntryType(DirID) = #PB_DirectoryEntry_Directory 
         ScanDisc(Dir+EntryName+"") 
       EndIf 
       
       Debug Dir+DirectoryEntryName(DirID) 
     Wend 
     FinishDirectory(DirID) 
   EndIf
   
 EndProcedure
 
 ScanDisc("C:")
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
25.03.2012, 05:28  [ТС] 9
locm,
вообще-то тема у меня другая (хотя сейчас посмотрел, действительно тему неточно назвал, надо было назвать так, как тему этого сообщения назвал).
Я знаю, как рекурсивно просматривать вложенные папки.
0
Исследователь
316 / 315 / 24
Регистрация: 06.04.2011
Сообщений: 870
25.03.2012, 08:23 10
Busine2012, такой функции нет. Просто нет.
А насчет сайтов... Нужно запомнить только один (!!!): msdn.microsoft.com. Там располагается полный список функций. Зачастую даже с примерами. И даже появляются статьи на русском.
1
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
25.03.2012, 08:26  [ТС] 11
Цитата Сообщение от GrayWolf Посмотреть сообщение
Нужно запомнить только один (!!!): msdn.microsoft.com.
я не нашёл там раздел про API.
0
Исследователь
316 / 315 / 24
Регистрация: 06.04.2011
Сообщений: 870
25.03.2012, 08:54 12
Для начала - что есть API? API - это "Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface, API [эй-пи-ай])[1] — набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений." Взято отсюда.
На MSDN (что, кстати, расшифровывается как Microsoft Software Development Network) выложены описания функций под почти все продукты, разработанные Microsoft и имеющие API. А это Windows всех версий и модификаций, Office и т.д. И структурированы они не по системам, а по "направлениям": защита данных, создание интерфейса, работа с оборудованием и т.д.
Хотите почитать про создание и использование элементов интерфейса - пожалуйста, хотите почитать о программировании для локальных сетей - прошу сюда. Заходите в соответствующий подраздел и читайте, смотрите какие функции используются, каковы принципы использования вообще. Там есть все. И все всегда будут вас посылать именно на этот сайт до тех пор, пока вы будете писать для ОС Windows.
Если же вам по каким-либо причинам не хочется постоянно обращаться к интернету - купите диски с MSDN, установите себе на компьютер и пользуйтесь на здоровье.
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
25.03.2012, 08:59  [ТС] 13
GrayWolf,
нет, мне просто нужно вот так:
  1. надо написать код и взять функцию API;
  2. я захожу на этот форум в раздел API;
  3. вверху закреплена тема - Сайты с API;
  4. захожу на сайт и вижу, что API разделены на группы;
  5. я выбираю нужную группу и ищу конкретную функцию.
Другой вариант - это делать закладки в браузере, но если мне API функция нужна раз в год, то зачем мне эта закладка нужна?

Или вот вы предлагаете зайти на сайт MSDN. Какой мне запрос сделать в поиске Bing, чтобы оказаться в разделе с API? Только через год я забуду этот запрос.
0
Исследователь
316 / 315 / 24
Регистрация: 06.04.2011
Сообщений: 870
25.03.2012, 15:28 14
Я прекрасно понял, чего вы хотите. Боюсь, что вы меня не поняли. MSDN - это и есть сборник API-функций. Он весь (!!!) состоит из них, полностью!!! ЛЮБАЯ функция, описанная в нем, - это функция API. Он поделен на разделы/группы, в которых описано на что направлены функции, содержащиеся в нем.
Хотите конкретную ссылку - пожалуйста. Раздел посвящен функциям для Windows настольных компьютеров.
0
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
25.03.2012, 15:30  [ТС] 15
Цитата Сообщение от GrayWolf Посмотреть сообщение
Хотите конкретную ссылку
хочу, чтобы конкретную ссылку закрепили как тему, чтобы когда вопрос возник, зашёл на форум, нашёл раздел API и перешёл по ссылке.
0
Исследователь
316 / 315 / 24
Регистрация: 06.04.2011
Сообщений: 870
25.03.2012, 15:49 16
Busine2012, а адрес в браузере набрать что мешает? Вроде бы короткий достаточно.
Если хотите конкретно тему, так и пишите администратору раздела. Но думаю, что создавать тему из-за одной ссылки никто не будет. Выкладывать кучу ссылок в одной теме... Такое пытались проделать далеко не на одном форуме в течение более (это только я столько помню) 10-ти лет - все провалились. Информация устаревает, сайты удаляются и т.д. Смысл?
Но есть один, постоянно обновляющийся и содержащий почти всю нужную информацию. Догадаетесь какой? :-)
1
1300 / 402 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
25.03.2012, 15:51  [ТС] 17
GrayWolf,
ясно.
А можете путь написать, как добраться до раздела API в MSDN с главной страницы?
0
Исследователь
316 / 315 / 24
Регистрация: 06.04.2011
Сообщений: 870
25.03.2012, 18:31 18
После ввода адреса выбираем вверху "Библиотека". Но, так как на русском справки маловато и это не то, что нам нужно, то справа вверху переключаем язык на английский. Если быть точней, то "Canada - English" или "United States - English", кому как нравится. Канада просто первой в списке встречается. Все, мы в основном "меню". Быстрые ссылки в основной части окна (справа) переведут вас в нужный раздел.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2012, 18:31

Количество файлов в определенной папке
Можно средствами C# подсчитать количество файлов в определенной папке?%)

Поиск файлов в определенной папке
ребят помогите никак не могу понять почему одна процедура работает, а остальные нет, хотя делал всё...

Копирование определенной строки из файлов в папке
Добрый день, уважаемые! Подскажите пожалуйста макрос. Есть папка, в которой лежат книги экселя....

Удаление файлов в определенной папке на сервере
Доброго времени суток. Есть вот так код страницы, не пойму как правильно сделать так, что бы около...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.