Форум программистов, компьютерный форум CyberForum.ru

помогите с операторами while и for - C++

Восстановить пароль Регистрация
 
sweetydady
5 / 1 / 1
Регистрация: 19.02.2012
Сообщений: 34
03.05.2012, 19:45     помогите с операторами while и for #1
есть программа, и мне нужно чтоб выводило информацию о файле во время оператора while.
все работает, если оставить один if и к нему добавить else, но мне нужно чтоб несколько вариантов выводило, например : файл скрытый, и только для чтения.
C++ (Qt)
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
#include <windows.h>
#include <iostream>
 
using namespace std;
 
int main()
{
  DWORD  file_attr;
 
  // Г·ГЁГІГ*ГҐГ¬ Г*òðèáóòû ГґГ*éëГ*
  file_attr = GetFileAttributes("D:\\hello.jpg");
  if(file_attr == -1)
  {
    cerr << "Get file attributes failed." << endl
      << "The last error code: " << GetLastError() << endl;
    cout << "Press any key to finish.";
    cin.get();
    return 0;
  }  
  // ïðîâåðÿåì, ГЄГ*êîé ГЅГІГ® ГґГ*éë
while (file_attr == -1)
  {
  if(file_attr == FILE_ATTRIBUTE_NORMAL)
    cout << "This is a normal file." << endl;
   
  if(file_attr == FILE_ATTRIBUTE_HIDDEN)
    cout << "This is a hidden file." << endl;
    
  if(file_attr == FILE_ATTRIBUTE_READONLY)
    cout << "This is not a ReadOnly file." << endl;
  
  if(file_attr == FILE_ATTRIBUTE_SYSTEM)
    cout << "This is not a System file." << endl;
   
  if(file_attr == FILE_ATTRIBUTE_TEMPORARY)
    cout << "This is not a TEMPORARY file." << endl;
    
  if(file_attr == FILE_ATTRIBUTE_COMPRESSED)
    cout << "This is not a COMPRESSED file." << endl;
}
 
  system ("pause");
  
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2012, 19:45     помогите с операторами while и for
Посмотрите здесь:

Задания с операторами выбора C++
Задания с операторами C++
Работа с битовыми операторами C++
C++ Проблема с операторами
Выражение с математическими операторами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.05.2012, 20:02     помогите с операторами while и for #2
Ну а Вы сами как думаете, если переменная file_attr имеет целочисленный тип и может в один момент времени быть равна только одному значению.
sweetydady
5 / 1 / 1
Регистрация: 19.02.2012
Сообщений: 34
03.05.2012, 20:05  [ТС]     помогите с операторами while и for #3
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну а Вы сами как думаете, если переменная file_attr имеет целочисленный тип и может в один момент времени быть равна только одному значению.
Вы не подскажите что сделать, а то мозги уже кипят(
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.05.2012, 20:10     помогите с операторами while и for #4
Скорей всего тут возвращается значение флагов. Я еще пока не знаком с WinAPI, но могу предположить, что нужно сравнивать с помощью битовых операций. В данном случае битовой операции &. Попробуйте
C++
1
if ( file_attr & FILE_ATTRIBUTE_NORMAL )
и так с каждым условием.
sweetydady
5 / 1 / 1
Регистрация: 19.02.2012
Сообщений: 34
03.05.2012, 20:22  [ТС]     помогите с операторами while и for #5
Цитата Сообщение от Toshkarik Посмотреть сообщение
Скорей всего тут возвращается значение флагов. Я еще пока не знаком с WinAPI, но могу предположить, что нужно сравнивать с помощью битовых операций. В данном случае битовой операции &. Попробуйте
C++
1
if ( file_attr & FILE_ATTRIBUTE_NORMAL )
и так с каждым условием.
не работает
amfisat
 Аватар для amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 235
03.05.2012, 20:28     помогите с операторами while и for #6
Если верить msdn, то функция GetFileAttributes возвращает не целое число, но список элементов (атрибутов), потому и не срабатывает условие
C++
1
 if(file_attr == -1)
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.05.2012, 20:29     помогите с операторами while и for #7
С того же msdn
C++
1
2
3
DWORD WINAPI GetFileAttributes(
  __in  LPCTSTR lpFileName
);
Как мы видим функция возвращает целое число.
sweetydady
5 / 1 / 1
Регистрация: 19.02.2012
Сообщений: 34
03.05.2012, 20:33  [ТС]     помогите с операторами while и for #8
так что ж мне делать? курсак горит
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.05.2012, 20:35     помогите с операторами while и for #9
А что именно не работает в предложенном мной варианте? По идеи все должно работать.
sweetydady
5 / 1 / 1
Регистрация: 19.02.2012
Сообщений: 34
03.05.2012, 20:36  [ТС]     помогите с операторами while и for #10
Цитата Сообщение от Toshkarik Посмотреть сообщение
А что именно не работает в предложенном мной варианте? По идеи все должно работать.
пишет нажмите кнопку для продолжения (выхода) и все
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.05.2012, 20:38     помогите с операторами while и for #11
Так правильно, условия цикла что в себе содержит? Делать пока file_attr равна -1? Если с файлом все в порядке то оно и выполнятся не будет.

Добавлено через 49 секунд
Если вам нужно просто вывести все атрибуты один раз, то вообще уберите цикл.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2012, 20:42     помогите с операторами while и for
Еще ссылки по теме:

Работа с операторами условия C++
Задания с операторами C++
Функция с условными операторами C++

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

Или воспользуйтесь поиском по форуму:
sweetydady
5 / 1 / 1
Регистрация: 19.02.2012
Сообщений: 34
03.05.2012, 20:42  [ТС]     помогите с операторами while и for #12
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так правильно, условия цикла что в себе содержит? Делать пока file_attr равна -1? Если с файлом все в порядке то оно и выполнятся не будет.

Добавлено через 49 секунд
Если вам нужно просто вывести все атрибуты один раз, то вообще уберите цикл.
ЗАРАБОТАЛО!!! Огромнейшее спасибо!!
Yandex
Объявления
03.05.2012, 20:42     помогите с операторами while и for
Ответ Создать тему
Опции темы

Текущее время: 13:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru