Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/47: Рейтинг темы: голосов - 47, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
1

Получить атрибуты файла

27.11.2014, 08:32. Показов 9864. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал код, не понимаю, почему не работает. Ошибок нет, но всегда получаю invalid attributes. Подскажите в чем ошибка. Спасибо


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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <string>
#include <iomanip>
#include <stdio.h>
#include <conio.h>
 
 
using namespace std;
 
#define BUFFERSIZE 255
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    TCHAR* filename = new TCHAR[BUFFERSIZE];
    char ch;
    if (argc >= 2)
    {
        filename = argv[1];
    }
    else
    {
        do
        {
            std::cout << "You didn't provide a path to the file. Do you want to type it now? [y/n]" << std::endl;
            if (!(std::cin >> ch))
                return 0;
        } while ((ch != 'y') && (ch != 'Y') && (ch != 'n') && (ch != 'N'));
        if ((ch == 'N') || (ch == 'n'))
            return 0;
        cin.clear();
        bool done;
        do
        {
            std::cout << "Type in the path to the file" << std::endl;
            fgetws(filename, BUFFERSIZE, stdin);
            if (!fgetws(filename, BUFFERSIZE, stdin)){
                done = false;
            }
            else done = true;
        } while (!done);
    }
    fputws(filename,stdout);
    DWORD d = GetFileAttributesA((LPCSTR) filename);
    cout << d;
    std::cout << "Attributes for file: ";
    fputws(filename, stdout);
    if (d == INVALID_FILE_ATTRIBUTES)
    {
        std::cout << "Invalid attributes" << std::endl;
    }
    else
    {
        if (d & FILE_ATTRIBUTE_ARCHIVE)
        {
            std::cout << "Archive" << std::endl;
            d &= ~FILE_ATTRIBUTE_ARCHIVE;
        }
        if (d & FILE_ATTRIBUTE_COMPRESSED)
        {
            std::cout << "Compressed" << std::endl;
            d &= ~FILE_ATTRIBUTE_COMPRESSED;
        }
        if (d & FILE_ATTRIBUTE_DIRECTORY)
        {
            std::cout << "Directory" << std::endl;
            d &= ~FILE_ATTRIBUTE_DIRECTORY;
        }
        if (d & FILE_ATTRIBUTE_HIDDEN)
        {
            std::cout << "Hidden" << std::endl;
            d &= ~FILE_ATTRIBUTE_HIDDEN;
        }
        if (d & FILE_ATTRIBUTE_READONLY)
        {
            std::cout << "Read-only" << std::endl;
            d &= ~FILE_ATTRIBUTE_READONLY;
        }
        if (d != 0)
        {
            std::cout << "Other: " << std::hex << std::showbase << std::setw(8) << std::setfill('0') << d << std::endl;
        }
    }
 
    std::cout << "Press a key to exit" << std::endl;
    _getch();
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2014, 08:32
Ответы с готовыми решениями:

Как получить атрибуты длл функции?
Как получить атрибуты длл функции? (GetFileAttributes) #include &lt;iostream&gt; #include &lt;windows.h&gt;...

Атрибуты файла
Добрый день! Помогите, пожалуйста. Написала программу, но работает не совсем правильно. При...

Получить атрибуты скрытого файла
Учу Python как первый язык программирования. Пишу код, который решает реальные задачи. Сейчас...

Как получить атрибуты файла и отобразить их в ListView?
Собственно как получить атрибуты файла и отобразить все это в ListBox по колонкам? Например: Путь,...

30
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,669
27.11.2014, 08:42 2
В 21-й строке что? Строки так не копируют. Используй _tcscpy().
Тип проекта у тебя Unicode судя по fputws, значит функции Windows должны быть с W: GetFileAttributesW и т. п. или просто GetFileAttributes.
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 09:02  [ТС] 3
Исправил, но не помогло. Кстати, в _tcscpy_s какой параметр параметр задавать в размере при копировании из argv?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 09:16 4
Цитата Сообщение от MikeB Посмотреть сообщение
Исправил, но не помогло. Кстати, в _tcscpy_s какой параметр параметр задавать в размере при копировании из argv?
используй lstrcpy(), и никогда не надо писать так GetFileAttributesA() или GetFileAttributesW(), нужно писать просто GetFileAttributes()
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 09:18  [ТС] 5
Хорошо, а проблему то как решить, не подскажите?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 09:24 6
На ошибки проверяй, какой System Error Code возвращает GetFileAttributes() ????

http://www.vsokovikov.narod.ru... ibutes.htm
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 09:43  [ТС] 7
Я проверял на ошибки перед тем, как сюда написать. 2^32 возвращает
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 09:57 8
конкретно какой код ошибки возвращает ?
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 09:59  [ТС] 9
какой код ошибки? Функция число возвращает
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:01 10
Читай пост №6 по ссылке, внимательно читать !!!
Ну и жду код ошибки
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 10:10  [ТС] 11
Код 123
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:21 12
System Error Codes
ERROR_INVALID_NAME
123 (0x7B)

The filename, directory name, or volume label syntax is incorrect.
Имя файла у тебя неверное, т.е. не существует такого файла
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 10:23  [ТС] 13
Задаю C:\Windows
Когда передаю как атрибут командной строки - отрабатывает нормально.
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:28 14
Цитата Сообщение от MikeB Посмотреть сообщение
C:\Windows
Так ты хочешь получить аттрибуты папки Windows ?
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 10:29  [ТС] 15
Это просто пример
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:33 16
Я же говорю неправильный путь у тебя, это даже не я говорю, это система говорит, а она не врет.
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 10:35  [ТС] 17
Тогда почему, когда я передаю тот же параметр через cmd, а через ввод в приложении, все работает?
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:48 18
у тебя еще должен стоять в начале
C++
1
2
#define UNICODE
#define  _UNICODE
либо в свойствах проекта должно стоять: Использовать набор символов Юникода
0
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 29
27.11.2014, 10:50  [ТС] 19
Стоит. На результат не влияет
0
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:59 20
Покажи свой код тогда
0
27.11.2014, 10:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2014, 10:59
Помогаю со студенческими работами здесь

Получить атрибуты файла, заданного в командной строке
Не создается com-файл. Пишет что то там с CS:IP не получилось) помогите найти ошибку .286...

Получить атрибуты тега <p> на HTML-странице
Всем привет! Пытаюсь вытащить дискрипшны из-под пинов на странице...

Word: получить символы текста и атрибуты
Мне нужно получить все символы документа и для каждого символы его атрибуты: жирный, курсив,...

Получить тег и его атрибуты, зная идентификатор
есть переменная с html в ней есть тег путь будет &lt;teg atribut_1=&quot;1&quot; atribut_n=&quot;n&quot; id=&quot;idd&quot;...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru