powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Файл или папка
10 сообщений из 10, страница 1 из 1
Файл или папка
    #34065637
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как определить что возвратила FindFirst[Next]File файл или папку? В этом коде

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void ListFilesInFolder(wchar_t* pFolderPath)
{
	DWORD			dwError;
	HANDLE			hFind = INVALID_HANDLE_VALUE;
	WIN32_FIND_DATA FindFileData;
	hFind = FindFirstFile(pFolderPath, &FindFileData);
	if (hFind == INVALID_HANDLE_VALUE)
		return;
	else
	{
		if(FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
		     AfxMessageBox(FindFileData.cFileName); //-- работает для всего!!
........
}

MessageBox вываливается для папок и файлов. Я что-то не так делаю?

Спасибо!
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
Файл или папка
    #34065662
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CerebrumКак определить что возвратила FindFirst[Next]File файл или папку? В этом коде

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void ListFilesInFolder(wchar_t* pFolderPath)
{
	DWORD			dwError;
	HANDLE			hFind = INVALID_HANDLE_VALUE;
	WIN32_FIND_DATA FindFileData;
	hFind = FindFirstFile(pFolderPath, &FindFileData);
	if (hFind == INVALID_HANDLE_VALUE)
		return;
	else
	{
		if(FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
		     AfxMessageBox(FindFileData.cFileName); //-- работает для всего!!
........
}

MessageBox вываливается для папок и файлов. Я что-то не так делаю?

Спасибо!
--------------------------------------------------------------
[подпись с другого сайта]

Надо же бит сравнивать...
...
Рейтинг: 0 / 0
Файл или папка
    #34065677
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я что делаю?

--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
Файл или папка
    #34065776
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumа я что делаю?

--------------------------------------------------------------
[подпись с другого сайта]

Код: plaintext
1.
if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)== 0 )

Если не установлен бит, тогда файл.

Биты, обычно, так выделяются...
...
Рейтинг: 0 / 0
Файл или папка
    #34065787
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, допер

--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
Файл или папка
    #34106263
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
if((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)== 0 )

авторЕсли не установлен бит, тогда файл.

Биты, обычно, так выделяются...

Спросить хотел... Т.е. FILE_ATTRIBUTE_DIRECTORY значит - 000001, например где первый бит в структуре FindFileData.dwFileAttributes если установлен 1 то значит файл...Если нет то дириктория
FILE_ATTRIBUTE_DIRECTORY - двоичное число какое получается ?... Или я неправильно понял...Заранее благодарствую..
...
Рейтинг: 0 / 0
Файл или папка
    #34106280
<>
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FindFileData - это структура
dwFileAttributes - это член структуры типа DWORD(32 битное число)
FILE_ATTRIBUTE_DIRECTORY - это маска, с ее помощью выделяется нужный бит из dwFileAttributes в операции &.

В dwFileAttributes содержится информация о различных атрибутах (т.е. установлены или сняты различные биты). FILE_ATTRIBUTE_DIRECTORY как раз предназначена для определения, установлен или снят бит, отвечающий за то, файл ли это или папка.
...
Рейтинг: 0 / 0
Файл или папка
    #34106289
UlanOf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<>FindFileData - это структура
dwFileAttributes - это член структуры типа DWORD(32 битное число)
FILE_ATTRIBUTE_DIRECTORY - это маска, с ее помощью выделяется нужный бит из dwFileAttributes в операции &.

В dwFileAttributes содержится информация о различных атрибутах (т.е. установлены или сняты различные биты). FILE_ATTRIBUTE_DIRECTORY как раз предназначена для определения, установлен или снят бит, отвечающий за то, файл ли это или папка.

Да я понял что это маска...И что проверяем...Если правильно понял то путем логического умножения ....
_00001
&10101
--------
!= 0 это ясно
или
_000001
&100010
---------
== 0 вот собственно наверно так...
Вот в отладчике посмотрел значениее dwFileAttributes при переборе музыкальных файлов оказалось 128....
А мне интересно значение самой маски...Какой именно бит проверяется при проверке на "папка или файл".
Самому выяснить какой бит за что отввечает это извращение... Путем тестирования...Вроде правильно высказался .:)
...
Рейтинг: 0 / 0
Файл или папка
    #34106304
&lt;&gt;
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посерчить надо в хедерах в Platform SDK. Там есть все константы :)
...
Рейтинг: 0 / 0
Файл или папка
    #34108204
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выведи значение FILE_ATTRIBUTE_DIRECTORY
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Файл или папка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]