Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/88: Рейтинг темы: голосов - 88, средняя оценка - 4.84
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2

Атрибуты файла

06.08.2012, 11:31. Показов 16192. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в чём ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <Windows.h>
#include <io.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    WIN32_FIND_DATAA findData;
    HANDLE hFile = FindFirstFileA("G:/23/1/1.txt", &findData);
 
    if (hFile == INVALID_HANDLE_VALUE)
    {
        cout << "There are problems with the file" << endl;
        return -1;
        exit(1);
    }
    else
    {
        cout << "Фаил: ";
        if (findData.dwFileAttributes && FILE_ATTRIBUTE_HIDDEN)
        {
        cout << "Скрытый ";
        }
        if (findData.dwFileAttributes && FILE_ATTRIBUTE_SYSTEM)
        {
        cout << "Системный ";
        }
        if (findData.dwFileAttributes && FILE_ATTRIBUTE_ARCHIVE)
        {
        cout << "Архивный ";
        }
        if (findData.dwFileAttributes && FILE_ATTRIBUTE_COMPRESSED)
        {
            cout << "Сжатый";
        }
    }   
 
    cout << endl << endl;
 
 
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.08.2012, 11:31
Ответы с готовыми решениями:

можно ли менять атрибуты файла?
Вот примерно так пробую, но чтото не получается. Поэтому возник вопрос-можно ли их вообще менять? Если можно, то подскажите где туплю?) ...

Атрибуты консоли в C++
С++ Win32 Console Application. Компилятор - Microsoft Visual Studio C++ 2005 Как при компилировании задать параметр для консоли,...

Атрибуты для директории
Всем доброго времени суток помогите мне разобратся как создавать папки/файлы с атрибутами? там скрытый, ну в таком смысле. Создаю папку при...

8
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2012, 11:34
А что не работает?
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
06.08.2012, 11:36
Может стоит логическое И заменить сравнением на равенство?
0
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2
06.08.2012, 11:45  [ТС]
Цитата Сообщение от kazak Посмотреть сообщение
Может стоит логическое И заменить сравнением на равенство?
попробуй у себя код скомплить и посмотри как он будет себя вести

Добавлено через 4 минуты
проблема в том то что он не может комбинировать. он выдаёт только 1 параметр. если их больше 2 то фейл
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.08.2012, 11:48
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
findData.dwFileAttributes && FILE_ATTRIBUTE_HIDDEN
- надо побитовое а не логическое И (убери второй крючок &)
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
06.08.2012, 11:52
А если так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.....................................
cout << "Фаил: ";
        if ( findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
        {
        cout << "Скрытый ";
        }
        if (findData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
        {
        cout << "Системный ";
        }
        if (findData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
        {
        cout << "Архивный ";
        }
        if (findData.dwFileAttributes & FILE_ATTRIBUTE_COMPRESSED)
        {
            cout << "Сжатый";
        }
.................................
Добавлено через 1 минуту
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
проблема в том то что он не может комбинировать.
Всё он комбинирует.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.08.2012, 12:03
KostyaKulakov, я вижу ты внял моему совету - это хорошо а теперь поясню на пальцах почему надо было побитовое а не логическое И
Смотри вот константы FILE_ATTRIBUTE
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define FILE_ATTRIBUTE_READONLY             0x00000001  
#define FILE_ATTRIBUTE_HIDDEN               0x00000002  
#define FILE_ATTRIBUTE_SYSTEM               0x00000004  
#define FILE_ATTRIBUTE_DIRECTORY            0x00000010  
#define FILE_ATTRIBUTE_ARCHIVE              0x00000020  
#define FILE_ATTRIBUTE_ENCRYPTED            0x00000040  
#define FILE_ATTRIBUTE_NORMAL               0x00000080  
#define FILE_ATTRIBUTE_TEMPORARY            0x00000100  
#define FILE_ATTRIBUTE_SPARSE_FILE          0x00000200  
#define FILE_ATTRIBUTE_REPARSE_POINT        0x00000400  
#define FILE_ATTRIBUTE_COMPRESSED           0x00000800  
#define FILE_ATTRIBUTE_OFFLINE              0x00001000  
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  0x00002000
Т.е это числа от 0x00000001 до 0x00002000 т.е все числа не равны 0. Теперь смотри логику алгоритма для логического И
if(dwFileAttributes И 0x00000001) т.е. всегда отрабатывающее условие(конечно если dwFileAttributes != 0) таким образом програмка должна была печатать на все файлы cout << "Скрытый ";
Что же делает побитовое И - фактически аналогичную операцию как и сравнение ==
т.е логика становиться уже такой if(dwFileAttributes == 0x00000001) - вот тут уже полноценное сравнение dwFileAttributes и константы файлового атрибута
1
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2
06.08.2012, 12:05  [ТС]
всем спасибо.
отдельное спасибо -=ЮрА=-

Добавлено через 1 минуту
может кому пригодится. вот вариант решения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <Windows.h>
#include <io.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    WIN32_FIND_DATAA findData;
    HANDLE hFile = FindFirstFileA("G:/23/1", &findData);
 
 
    if (hFile == INVALID_HANDLE_VALUE)
    {
        cout << "There are problems with the file" << endl;
        return -1;
        exit(1);
    }
        else
        {
            if (findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
                cout << "Скрытый ";
 
            if (findData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
                cout << "Системный ";
 
            if (findData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE)
                cout << "Архивный ";
 
            if (findData.dwFileAttributes & FILE_ATTRIBUTE_COMPRESSED)
                cout << "Сжатый";
 
            if(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                cout << "Является директоией" << endl;
        }   
    cout << endl << endl;
 
    return 0;
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.08.2012, 12:09
KostyaKulakov, ещё могу посоветовать функцию GetFileAttrributes (вдруг о ней ещё не знаешь) чтобы всяк раз когда для файла хотим найти атрибут не применять FindFirst(Next)File,
http://vsokovikov.narod.ru/New... ibutes.htm
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.08.2012, 12:09
Помогаю со студенческими работами здесь

Размер файлов и папок. Их атрибуты
Как получить размер файла и его атрибут? SYSTEMTIME time;//Время(?) WIN32_FIND_DATA FindFileData;//? HANDLE hf = FindFirstFile(str,...

Атрибуты прав при создании директории
Пишу mkdir(&quot;dir0777&quot;,0777); mkdir(&quot;dir0770&quot;,0770); mkdir(&quot;dir0707&quot;,0707); mkdir(&quot;dir0077&quot;,0077); Для владельца - права...

Определите класс, который должен содержать атрибуты
Здравствуйте уважаемые любители и ценители языка С++! У меня к вам огромная просьба. На днях нужно сдать контрольную работу по предмету...

Написать код для флага РФ, используя только атрибуты
Здравствуйте!!! Помогите пожалуйста, нужно написать код для флага РФ используя только атрибуты. Заранее благодарю...

Вывести на экран в виде таблицы атрибуты всех скрытых файлов
Имеется перечень файлов, каждый из которых задан своими атрибутами: имя, размер в байтах, скрытый, только для чтения, архивный. Вывести на...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru