Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2010, 19:41   #1
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
Вопрос FindFirstFile не пропускает папки

Вот часть кода перебирающая все файлы из выбранной директории и посылающая их в пути в listbox.
Подскажите почему не пропускаются папки, хотя фильтр указан *.*
Код:
BROWSEINFO              bi;
						char   szDisplayName[MAX_PATH]; 
						LPITEMIDLIST            pidl; 

						LPMALLOC  pMalloc = NULL;
						ZeroMemory(&bi, sizeof(bi));      
						bi.hwndOwner = NULL; 
						bi.pszDisplayName = szDisplayName; 
						bi.lpszTitle = TEXT("Select folder"); 
						bi.ulFlags = BIF_RETURNONLYFSDIRS;  
						pidl = SHBrowseForFolder(&bi); 
						if  (pidl)
						{
							SHGetPathFromIDList(pidl, szDisplayName); 	
							MessageBox(hWnd, szDisplayName, "1", NULL);
						}
						//strcat(szDisplayName, "\\");
						char searchstr [MAX_PATH];
						MessageBox(hWnd, szDisplayName, "2", NULL);
						hFind = FindFirstFile(strcat(szDisplayName,"\\*.*"), &FindFileData);
						MessageBox(hWnd, szDisplayName, "3", NULL);
						MessageBox(hWnd, FindFileData.cFileName, "4", NULL);
						int n =strlen(szDisplayName);
						int i;
						for(i=0; i<n,szDisplayName[i]!='*' ; i++)
						{
							searchstr[i]=szDisplayName[i];
						}
						searchstr[i]='\0';
						strcpy(szDisplayName, searchstr);
						strcat(searchstr, FindFileData.cFileName);
						MessageBox(hWnd, searchstr, "5", NULL);
						STLM(LB_ADDSTRING,0,searchstr);
						
						while(FindNextFile(hFind,&FindFileData))
						{
							strcpy(searchstr,szDisplayName);
							strcat(searchstr, FindFileData.cFileName);
							STLM(LB_ADDSTRING,0,searchstr);
						}
						FindClose(hFind);
Nitrino вне форума Ответить с цитированием
Старый 20.06.2010, 19:50   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

потому что папки под него попадают.
Код:
if(!(FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))//тогда файл
вроде не перепутал операцию И с ИЛИ(там И надо)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.06.2010, 20:03   #3
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

Спасибо)) Помогло)))
Nitrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FindFirstFile Vasyannm Общие вопросы C/C++ 3 20.05.2010 12:52
Почему первый байт пропускает? FantomasRUS Общие вопросы Delphi 2 12.05.2010 21:36
FindFirstFile Д'якон Win Api 2 14.03.2010 00:29
Функция, которая пропускает выходные. jungo Microsoft Office Excel 12 25.06.2008 08:59
Папки xTANATOSx Общие вопросы Delphi 1 05.11.2007 16:26