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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
молодой_горячий
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 42
#1

Работа с датой и функция SetVolumeLabel - C++

19.04.2014, 15:50. Просмотров 421. Ответов 6
Метки нет (Все метки)

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
void GetDate(time_t t,tm *tk)
{
   
   time(&t);
   tk=localtime(&t);
   cout<<"Local date: ";
   if ((1+tk->tm_mon)<10) cout << tk->tm_mday<<".0" <<1+tk->tm_mon <<" " <<1900+tk->tm_year  << endl;
        else  cout << tk->tm_mday<<1+tk->tm_mon <<" "<< 1900+tk->tm_year  << endl;
}
 
void SetDate(int day, int month, int year,time_t t,tm *tk )
{ 
   time(&t);
   tk=localtime(&t);
   tk->tm_mday = day;
   tk->tm_mon = month;
   tk->tm_year = year;
}
int main(int argc, char *argv[])
{
    time_t vTime;
    tm *vTK;
    time(&vTime);
    vTK=localtime(&vTime);
    int vDay, vMonth, vYear;
 if (argc==2)
   {
       if (!strcmp(argv[1],"getdate")) GetDate(vTime,vTK);
       if (!strcmp(argv[1],"setdate")) { 
                                        cout<<"enter day : "; cin>>vDay;
                                        cout<<"\nenter month : "; cin>>vMonth;
                                        cout<<"\nenter year : "; cin>>vYear;
                                        SetDate(vDay, vMonth, vYear,vTime,vTK);
                                       }
   }
}
Функция getdate() работает. Проблема в том, что после вызова setdate() значения даты не меняются(если второй раз вызвать getdate()), хотя я вроде и пишу
C++
1
2
3
   tk->tm_mday = day;
   tk->tm_mon = month;
   tk->tm_year = year;
2) Нужно поменять метку тома.
Прочитал море информации и пришел к последнему:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void ChangeLabel (LPCWSTR beforeLabel[2], LPCWSTR afterLabel)
{
    if (!SetVolumeLabel(beforeLabel[2],afterLabel)) cout<<"success";
}
int main(int argc, char *argv[])
{
LPCWSTR label1[2],label2;
if (argc==4) 
   {
       if (!strcmp(argv[1],"ChangeLabel")) {
                                            cout<<"enter label which you want to change : "; cin>>label1;
                                            cout<<"\nenter changed label : "; cin>>label2; 
                                            ChangeLabel(label1,label2);
                                           }
   }
Насколько я понял, эта функция работает так: первый параметр, к примеру "C:\"(3 знака), второй допустим "А"(но это мои догадки, если что исправьте).
Ошибка: 1 IntelliSense: отсутствует оператор ">>", соответствующий этим операндам
Благодарю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 15:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с датой и функция SetVolumeLabel (C++):

работа с датой - C++
как можно перевести дату в день, а также просуммировать или отнять 2 даты, которые заданы моей структурой struct DATE { int d,m,y; }

Работа с датой - C++
std::string str = &quot;Thu, 01-Jan-1970 00:00:01 GMT&quot;; std::tm t_time; std::istringstream ss(str); ss &gt;&gt; std::get_time(&amp;t_time, &quot;%a,...

Работа с датой (time.h) - C++
Вообщем такая проблема: void GetDate(time_t t,tm *tk) { time(&amp;t); tk=localtime(&amp;t); cout&lt;&lt;&quot;Local date: &quot;; ...

Задача. Работа с датой - C++
Дали задание, но я не пойму, что от меня требуется, подскажите пожалуйста, что нужно сделать? &quot;включить в класс функции для: ...

Работа с датой <сtime> - C++
Всем привет! Помогите пожалуйста. Нужно в переменную int year записать нынешний год. нашел код в аналогичной теме: #include...

Работа с датой и временем - C++
Доброе время суток дорогие программисты, у меня возникла очень большая проблема, которую я не могу решить. Если вам не трудно не могли бы...

6
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
19.04.2014, 16:00 #2
По метке тома: ты неправильно работаешь с LPCWSTR - это указатели на строки Unicode. Значит, надо выделять память и все строки должны быть Unicode.
0
молодой_горячий
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 42
19.04.2014, 16:04  [ТС] #3
Если Вас есть пример работы с ними, буду очень признателен.
0
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
19.04.2014, 16:22 #4
Примерно так:
C++
1
2
3
wchar_t path[] = L"D:\\";
wchar_t newlb[] = L"MYLABEL";
SetVolumeLabelW(path, newlb);
Добавлено через 4 минуты
А по поводу даты, я не понял, чем ты её устанавливаешь? time() и localtime() - для получения времени, а не для установки.
1
молодой_горячий
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 42
19.04.2014, 16:56  [ТС] #5
C++
1
2
3
tk->tm_mday = day;
   tk->tm_mon = month;
   tk->tm_year = year;
думал так =\

Добавлено через 31 минуту
Если брать тип wchar_t, при вызове функции изменения тома выскакивает ошибка:
IntelliSense: аргумент типа "wchar_t" несовместим с параметром типа "LPCWSTR"
0
IrineK
Заблокирован
19.04.2014, 17:03 #6
Цитата Сообщение от молодой_горячий Посмотреть сообщение
LPCWSTR
указатель на wchar_t
0
молодой_горячий
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 42
19.04.2014, 20:14  [ТС] #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void ChangeLabel (TCHAR* beforeLabel, TCHAR* afterLabel)
{
    if (!SetVolumeLabel(beforeLabel,afterLabel)) cout<<"success";
}
int main(int argc, char *argv[])
{
    TCHAR *label1 = new TCHAR[5];
    TCHAR* label2 = new TCHAR[5];
if (argc==2) 
   {
       if (!strcmp(argv[1],"ChangeLabel")) {
                                            cout<<"enter label which you want to change : "; wcin>>label1;
                                            cout<<"\nenter changed label : "; wcin>>label2;
                                            ChangeLabel(label1,label2);
                                }
   }
Предупреждение 1 warning C4700: использована неинициализированная локальная переменная "label1"
Предупреждение 2 warning C4700: использована неинициализированная локальная переменная "label2"
Как так, я же ввожу их?

Добавлено через 1 час 22 минуты
тему прошу закрыть, уже разобрался.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 20:14
Привет! Вот еще темы с ответами:

Работа с датой и временем put_time Ошибка этапа выполнения - C++
Решил не делать велосипедов. С не кустарными способами работы с датой и временем не знаком. clang 3.7.0-3 // put_time example ...

Работа с датой: по введенной дате определить время года, номер декады месяца - C++
написать программу установки и вывода даты, используя понятие класса. По введенной дате определить время года, номер декады месяца. ...

Работа со строками, функция substr - C++
Допустим есть строка, необходимо создать субстроку, отбросив первые пять символов. Если применить функцию substr: str.substr(5.n) ...

Работа со строками, функция strcat_s - C++
int main() { char *str1 = &quot;edfcax&quot;; char *str2 = &quot;abcd&quot;; //char temp = {}; // так работает char *temp = new char; // а вот...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
19.04.2014, 20:14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru