Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 278
от 18.07.2006, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 341, Экспертов: 30
В номере:Вопросов: 1, Ответов: 3


Вопрос № 49070: Здравствуйте. Подскажите, как имея хэндл (получен с помощью FindFirstFile и FindNextFile) файла узнать является ли он каталогом?...

Вопрос № 49.070
Здравствуйте. Подскажите, как имея хэндл (получен с помощью FindFirstFile и FindNextFile) файла узнать является ли он каталогом?
Отправлен: 13.07.2006, 23:23
Вопрос задал: Sova (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Physicist
Здравствуйте, Sova!

Если cFileName - это каталог, то GetFileAttributes(cFileName) вернет значение с установленным флагом FILE_ATTRIBUTE_DIRECTORY.

Пример:
WIN32_FIND_DATA fd;
HANDLE hFile=FindFirstFile(lpPathFileName,&fd);
do
{
if(GetFileAttributes(fd.cFileName) & FILE_ATTRIBUTE_DIRECTORY)
{//TODO
}
} while FindNextFile(hFindFile,&fd);

Ответ отправил: Physicist (статус: 4-ый класс)
Ответ отправлен: 13.07.2006, 23:38
Оценка за ответ: 5

Отвечает: Алексей Смуриков
Здравствуйте, Sova!
Вовсе необязательно использовать:
if(GetFileAttributes(fd.cFileName) & FILE_ATTRIBUTE_DIRECTORY)
можно просто так:
if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
---------
Speccy Rulezz!!!
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 14.07.2006, 06:16
Оценка за ответ: 5

Отвечает: Uamen
Здравствуйте, Sova!Дізнатися чи хендел є каталогом можна за допомогою функції GetFileInformationByHandle.
Наприклад:
HANDLE hFile;
BY_HANDLE_FILE_INFORMATION bhfi;
...
GetFileInformationByHandle(hFile, &bhfi);
if(bhfi.dwFileAttributes &= FILE_ATTRIBUTE_DIRECTORY)
cout << "This is directory";

Також можна дізнатися з самої функції FindFirstFile:
HANDLE hFile;
WIN32_FIND_DATA wfd;
hFile = FindFirstFile("C:\",&wfd);
if(wfd.dwFileAttributes &= FILE_ATTRIBUTE_DIRECTORY)
cout << "This is directory";
Ответ отправил: Uamen (статус: 1-ый класс)
Ответ отправлен: 15.07.2006, 00:31


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное