Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> значение InstallDate из реестра и перевод в дату 
V
    Опции темы
gl42
Дата 2.11.2011, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 2.11.2011

Репутация: нет
Всего: нет



Здравствуйте. 
необходимо перевести значение ключа InstallDate типа DWORD считанное из реестра в формат даты и времени. 
значение это - количество миллисекунд прошедших от 1.01.1970 до даты инсталляции. необходима сама дата установки. 
(Причем на некоторых машинах выводит значение installdate равное нулю.на некоторых количество тех самых миллисекунд).
Заранее благодарю за помощь.)

Код

var
  Reg: TRegistry;
  RegKey: DWord;

begin
Reg := TRegistry.Create;
 Try
   Reg.RootKey:=HKEY_LOCAL_MACHINE;
   Reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion')
   Reg.ValueExists('InstallDate')
   RegKey:=Reg.ReadInteger('InstallDate');
   ShowMessage(IntToStr(RegKey));
 except
    messageDlg('Не выходит получить дату инсталляции ОС', MtError,[mbOK],0);
 end;
  Reg.CloseKey;
  Reg.Free;
end;



Это сообщение отредактировал(а) gl42 - 2.11.2011, 22:59
PM MAIL   Вверх
volvo877
Дата 3.11.2011, 13:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Цитата(gl42 @  2.11.2011,  22:41 Найти цитируемый пост)
значение это - количество миллисекунд прошедших от 1.01.1970 до даты инсталляции
Не милли-, а просто секунд. Это Unix time. Вот и преобразуем:
Код
ShowMessage( DateTimeToStr(UnixToDateTime(regkey)) ); // uses DateUtils


Это сообщение отредактировал(а) volvo877 - 3.11.2011, 13:16
PM MAIL   Вверх
CodeMonkey
Дата 3.11.2011, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89





--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
gl42
Дата 3.11.2011, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 2.11.2011

Репутация: нет
Всего: нет



Цитата(volvo877 @ 3.11.2011,  13:15)
Цитата(gl42 @  2.11.2011,  22:41 Найти цитируемый пост)
значение это - количество миллисекунд прошедших от 1.01.1970 до даты инсталляции
Не милли-, а просто секунд. Это Unix time. Вот и преобразуем:
Код
ShowMessage( DateTimeToStr(UnixToDateTime(regkey)) ); // uses DateUtils

это я пробовала. выводит дату 1.01.1970. поэтому не вариант
PM MAIL   Вверх
gl42
Дата 3.11.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 2.11.2011

Репутация: нет
Всего: нет




Можно пожалуйста поподробней насчет как использовать этот класс. сама пока ничего толкового не нашла.
хоть какой-нибудь пример, чтобы разобраться? 
PM MAIL   Вверх
volvo877
Дата 3.11.2011, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Цитата(gl42 @  3.11.2011,  20:55 Найти цитируемый пост)
это я пробовала. выводит дату 1.01.1970. поэтому не вариант 
Значит, плохо пробовала, или пробовала на машине, где возвращается 0. Проверил у себя - выдает "23/11/2008 11:11:23" при значении InstallDate=1227438683 ... Так что как раз все правильно...
PM MAIL   Вверх
gl42
Дата 3.11.2011, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 2.11.2011

Репутация: нет
Всего: нет



Цитата(volvo877 @ 3.11.2011,  22:33)
Цитата(gl42 @  3.11.2011,  20:55 Найти цитируемый пост)
это я пробовала. выводит дату 1.01.1970. поэтому не вариант 
Значит, плохо пробовала, или пробовала на машине, где возвращается 0. Проверил у себя - выдает "23/11/2008 11:11:23" при значении InstallDate=1227438683 ... Так что как раз все правильно...

да, вы правы. там где показывает не ноль, выводит дату. только разница +2 часа от даты написанной в systeminfo. я так понимаю, из-за часового пояса?
спасибо огромное.)
PM MAIL   Вверх
CodeMonkey
Дата 4.11.2011, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(gl42 @  3.11.2011,  22:20 Найти цитируемый пост)
Можно пожалуйста поподробней насчет как использовать этот класс. сама пока ничего толкового не нашла.
хоть какой-нибудь пример, чтобы разобраться?  


http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=698
http://theroadtodelphi.wordpress.com/wmi-d...i-code-creator/
http://theroadtodelphi.wordpress.com/2011/...rating-systems/

Сверху-вниз: от мат-части до практики. По последней ссылке - готовый код.

Добавлено через 2 минуты и 42 секунды
Цитата(gl42 @  3.11.2011,  21:55 Найти цитируемый пост)
выводит дату 1.01.1970


1.01.1970 - это 0.



--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
gl42
Дата 4.11.2011, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 2.11.2011

Репутация: нет
Всего: нет



Цитата(CodeMonkey @  4.11.2011,  13:39 Найти цитируемый пост)
Цитата(gl42 @  3.11.2011,  22:20 )
Можно пожалуйста поподробней насчет как использовать этот класс. сама пока ничего толкового не нашла.
хоть какой-нибудь пример, чтобы разобраться?  


http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=698
http://theroadtodelphi.wordpress.com/wmi-d...i-code-creator/
http://theroadtodelphi.wordpress.com/2011/...rating-systems/

Сверху-вниз: от мат-части до практики. По последней ссылке - готовый код.

спасибо.)

Цитата(CodeMonkey @  4.11.2011,  13:39 Найти цитируемый пост)
Цитата(gl42 @  3.11.2011,  21:55 )
выводит дату 1.01.1970

1.01.1970 - это 0.

я уже поняла) 
не понятно почему может показывать этот ноль.


Это сообщение отредактировал(а) gl42 - 4.11.2011, 16:21
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.