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

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

Восстановить пароль Регистрация
 
молодой_горячий
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 42
19.04.2014, 15:50     Работа с датой и функция SetVolumeLabel #1
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: отсутствует оператор ">>", соответствующий этим операндам
Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 15:50     Работа с датой и функция SetVolumeLabel
Посмотрите здесь:

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

Добавлено через 31 минуту
Если брать тип wchar_t, при вызове функции изменения тома выскакивает ошибка:
IntelliSense: аргумент типа "wchar_t" несовместим с параметром типа "LPCWSTR"
IrineK
Заблокирован
19.04.2014, 17:03     Работа с датой и функция SetVolumeLabel #6
Цитата Сообщение от молодой_горячий Посмотреть сообщение
LPCWSTR
указатель на wchar_t
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2014, 20:14     Работа с датой и функция SetVolumeLabel
Еще ссылки по теме:

C++ Работа с файлами необходима функция или просто счетчик С++
C++ Работа и распределение памяти структуры, функция поиска мин эл
C++ Работа с датой <сtime>

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

Или воспользуйтесь поиском по форуму:
молодой_горячий
1 / 1 / 0
Регистрация: 26.04.2011
Сообщений: 42
19.04.2014, 20:14  [ТС]     Работа с датой и функция SetVolumeLabel #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 минуты
тему прошу закрыть, уже разобрался.
Yandex
Объявления
19.04.2014, 20:14     Работа с датой и функция SetVolumeLabel
Ответ Создать тему
Опции темы

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