3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161

Как программно узнать дату на своём компе?

17.02.2012, 18:14. Показов 10857. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
начал работу над регистрацией для своей проги. Требуется помощь: подскажите как мне считывать сегодняшнюю дату с моего компьютера.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2012, 18:14
Ответы с готовыми решениями:

Как узнать список текущих процессов запущеных на компе
Как узнать список текущих процессов запущеных на компе?

Как запустить сервак на своём компе?
Привет всем! Недавно я начил увлекатся программированием веб-сайтов. Сайт почти создан, но какой смысл мне его доводить до конца, если я...

С помощью какого кода можно запустить как либо файл по локальной сети, и так-же на своём компе
Всем доброго времени суток. У меня несколько вопросов. 1. С помощью какого кода можно запустить как либо файл по локальной сети, и...

66
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 14:20  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от LK Посмотреть сообщение
Клод, а скомпилировать и посмотреть самому западло ? И указать не три дня дня ожидания у моря погоды, а 5 минут - воспитание не позволяет ?
да не не западло
просто для времени другая функция
я её не знаю)
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.02.2012, 14:24
Чтоб не ждать три дня, ты зделай пока один день и вечерком все будет видно...
оп...не успел...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 14:28
Цитата Сообщение от Клод Посмотреть сообщение
да не не западло
просто для времени другая функция
я её не знаю)
чтобы узнать, далеко ходить не надо - достаточно просто почитать вашу же эту самую тему:
Цитата Сообщение от QVO Посмотреть сообщение
Time() - текущее время на компьютере. (дата по умолчанию 1899 года)
Date() - текущая дата на компьютере. (время по умолчанию 0 часов)
Now() - текущая дата и время на пк.
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 14:38  [ТС]
Короче чтобы не ждать в реестре поменял цифру18 на 19, а потом на 20
перезапускал прогу и изменений не происходило((

Добавлено через 8 минут
Я так думаю, что проблема в том, что ключ реестра не проверяется.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 14:55
а при чем здесь цифра в реесте, если вы в проге задаете текущую дату + 3 дня , а 18,19,20 в данном случае будет меньше, чем 18+3 ? если я все правильно понял, не читая , как и вы, вашу тему
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 14:58  [ТС]
я потом и побольше цифры ставил)))

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
if(reg -> KeyExists("DataReg") == true)
 {
   
   reg->RootKey = HKEY_CURRENT_USER;
   reg->OpenKey("Software",true);
   reg->OpenKeyReadOnly("DataReg");
 
   if (today == date + 1)
{
Вот эта часть кода у меня вызывает подозрение

ещё кое что проверил: поставил число 25е, запустил прогу, она поставила 18 число.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 15:18
вот и я о том же
Может, где и повторюсь (тему-то вашу я не читал ), но алгоритмъ такой:
1. При самом первом запуске проги записываем дату запуска в реестр.
2. При последующих запусках:
2.1. Если дата в реестре уже записана, ничего не делаем, ничего не пишем.
2.2. Сверяем дату из реестра с текущей датой и делаем необходимые телодвижения.
Я этого в коде не рассмотрел.
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 15:24  [ТС]
Цитата Сообщение от Клод Посмотреть сообщение
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
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  TDateTime date, today;
  date = date.CurrentDate();
  today = Date();
  TRegistry *reg = new TRegistry(); 
  reg->RootKey = HKEY_CURRENT_USER; 
  reg->OpenKey("Software",true); 
  if(reg -> ValueExists("DataReg") == 1) {
    reg->RootKey = HKEY_CURRENT_USER; 
    reg->OpenKey("Software",true);
    reg->OpenKeyReadOnly("DataReg");
    if (today == date + 3) {
      Form2->ShowModal();
      if (Form2->ShowModal()==mrOk) {
        ShowMessage("Пароль введён верно");
        reg->RootKey=HKEY_CURRENT_USER;
        reg->OpenKey("Software",false);
        reg->DeleteValue("DataReg");
        reg->CloseKey(); * 
        delete reg; * * * 
      }
      if(Form2->ShowModal()==mrCancel)
        Close();
    }
  }
  else {
    reg -> WriteString("DataReg",date.DateString()); 
  }
  reg->CloseKey();
  delete reg;
}
вот код, отвечающий за то, что ты писал.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 15:38
а для чего вы удаляете значение из реестра
C++
1
     reg->DeleteValue("DataReg");
? как я понимаю, в данном случае, при последующем запуске в реестр будет записано уже новое значение и проверка осуществляться не будет.
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 15:42  [ТС]
если пароль на 2й форме будет введён верно, то значение из реестра удалится
хотя я придумал решение получше на этот счёт.
Но у меня проблема в том, что программа не проверяет значение ключа, и создаёт своё значение. А надо чтоб проверял
вот моя проверка:
C++
1
if(reg -> KeyExists("DataReg") == 1)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 15:51
а вы не пробовали посмотреть/проверить, что у вас возвращает
C++
1
date + 3
?
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 15:54  [ТС]
нет, зато попробовал и узнал, что
C++
1
if(KeyExsists("DataReg") == true)
не возвращает ничего(
а до date +3 ещё надо добраться
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 16:10
В младенческом возрасте что-то похожее я делал, и оно даже работало , может, натолкнет на мысль :
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
void __fastcall TFormMain::LogRun(void)
{
// Запись в реестр значения, при значении которого 1
// действие должно выполняться только один раз - 
// при первом запуске программы
  TRegistry * regLR;
  regLR = new TRegistry; // Создаем новый ключ
  int D1;
  int D2;
  int D3;
  regLR->RootKey = HKEY_CURRENT_USER; // Главная ветка
  AnsiString KeyLogRun = "\\Software\\CoolProg\\Setting\\Common"; // Ветка программі
  regLR->OpenKey(KeyLogRun, true);
  if (regLR->ValueExists("10001") == 1) {
    int D1 = regLR->ReadInteger ("10001");
    regLR->WriteInteger ("10001", D1+1);
    int D2 = regLR->ReadInteger ("10001");
    Application->MessageBox("Количество запусков "
                            + IntToStr(D2)).c_str(),
                            "CoolProg",
                            MB_OK+MB_ICONINFORMATION);
  }
  else {
    regLR->WriteInteger ("10001", 1);
    int D3 = regLR->ReadInteger ("10001");
    Application->MessageBox(("Зарегистрировано.\n"
                            + "Параметр лицензии."
                            + IntToStr(D3)).c_str(),
                            "CoolProg",
                            MB_OK + MB_ICONINFORMATION);
  }
  delete regLR;
}
а ваша дата - то же число, только double, а вот какой у вас получился тип date ? и что с чем вы суммировали в этом:
C++
1
date + 3
- посмотреть бы.
1
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 16:16  [ТС]
Короче я запутался.
Давайте вначале разберёмся с проверкой а потом с date?
У меня прога не хочет проверять ключ. Как решить это траблу?
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
TDateTime date, today;
date = date.CurrentDate();
today = Date();
TRegistry *reg = new TRegistry(); //Создали обьект класса TRegistry
reg->RootKey = HKEY_CURRENT_USER; //Теперь мы будем работать с разделом HKEY_LOCAL_MACHINE (все записи ключей, удаление, перемещение будут происходить в этом разделе)
reg->OpenKey("Software",true); //Мы создали ключ, если же такой ключ уже существовал, то он был бы открыт для записи
if(reg->KeyExists("DataReg") == 1)
 {
   ShowMessage("Урааааа!");
   // Читаем и проверяем
   reg->RootKey = HKEY_CURRENT_USER; //Теперь мы будем работать с разделом HKEY_LOCAL_MACHINE (все записи ключей, удаление, перемещение будут происходить в этом разделе)
   reg->OpenKey("Software",true);
   reg->OpenKeyReadOnly("DataReg");
 
   if (today == date + 1)
{
    Form2->ShowModal();
    //открыли окно регистрации
    if(Form2->ShowModal()==mrOk)
    {
    ShowMessage("Пароль введён верно! Запишите его куда нибудь. Его надо вводить через каждые 3 дня!");
    reg->RootKey=HKEY_CURRENT_USER;  //Как и при записи указываем раздел с которым будем работать
    reg->OpenKey("Software",false);   //Октрываем ключ, над которым будем работать
    reg->DeleteValue("DataReg");     //Удаляем параметр
    reg->CloseKey();   //Закрываем ключ
    delete reg;       //Освобождаем память
    }
    if(Form2->ShowModal()==mrCancel)
    Close();
    }
}
 else
  {
     ShowMessage("Проверка не выполнена");
      reg -> WriteString("DataReg",date.DateString()); // Создаем метку
  }
reg->CloseKey();   //Закрываем ключ
delete reg;       //Освобождаем память
//Можно открыть реестр и полюбоваться на проделанную работу.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 16:19
дык, я вам и показал свой код, в котором все как бы проверялось
а сакральное предназначение вашей толпы if-ов я так и не понял
0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 16:26  [ТС]
Странно но получилось))
Заменил KeyExists на ValueExists.
Спс
Сейчас посмотрим что выдаст прога...
Таак вы были правы.
C++
1
today = date +1
; - неправильно и что делать?(
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 16:29
что - неправильно ?

Не по теме:

не в этой ли теме я уже сегодня упоминал о выключенном за неуплату угадываетеле мыслей на расстоянии :) ?

0
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 161
18.02.2012, 16:32  [ТС]
Да либо реестр не открывает и не считывает значение DateReg, либо
C++
1
today = date +1
не работает, потому что окно с регой не вылетает
Лан, мне пора на тренировку, вечером буду продолжать))
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.02.2012, 16:37
и все же,
C++
1
today == date +1
, если в условии, а
C++
1
today = date +1
- это присваивание
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.02.2012, 17:38
Пример определения в событии Form1/OnShow:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if (Label1->Caption=="777") { // Label1 здесь играет роль переменной
    Label1->Caption=DateToStr(Now()+30); // здесь можете поставить +3 (з дня)
     
    AnsiString str3;
    str3 = Label1->Caption;
    // Сохраняем Дату истечения лицензии в реестре
    TRegistry *reg3 = new TRegistry();
    reg3->RootKey=HKEY_CURRENT_USER;
    reg3->OpenKey("Software\\Soft\\Klod",true);
    reg3->WriteString("Caption",str4);
    reg3->CloseKey();
    reg3 = NULL;
    delete reg3;
А теперь сравним:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TDate date1, date2; // переменные для вычисления остатка дней лицензии
    // Проверяем и вводим ограничения если лицензия закончилась
    TDate A = DateToStr(Now()); // текущая дата
    TDate B = StrToDate(Label1->Caption);
    signed char Result = CompareDate(A, B);
    switch (Result) {
 
  case -1:    
 
    break;
 
  case 0:
 
    break;
 
  case 1:
 
           break;}
или так:
C++
1
2
3
4
5
date1 = DateToStr(Now());
date2 = StrToDate(Label1->Caption);
Label2->Caption = (FloatToStr(DaysBetween(date1, date2)));
// и наконец проверяем сколько дней прошло
if (Label2->Caption == (3)){ShowMessage("Гитлер капут");}
Если это не поможет тогда дело труба...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2012, 17:38

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

Как отключить монитор программно на реальном компе с возможностью удаленного доступа?
Здравствуйте дорогие форумчане. Мне очень нужно отключить монитор программно на реальном компе с возможностью удаленного доступа к этой же...

Как узнать какая версия Access стоит на компе?
Как узнать какая версия Access стоит на компе?

Как узнать пароль от wifi, если он записан на компе?
Вообще. Дома стоит wifi роутерт с паролем. Пароль забыл, но комп к нему подключается. В доме появилось новое устройство. Можно ли узнать...

Как узнать номер версии Internet Explorer, установленного на компе ?
Если на компьютере установлен IE версии ниже 5, то у программы проблемы. Как проверить номер версии ? Игорь


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru