Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.30;
Скачать: CL | DM;

Вниз

Проблема с GetKeyDateTime в Win XP   Найти похожие ветки 

 
Vayrus   (2009-06-26 18:32) [0]

Здравствуйте, пишу простенькую программку, но возникла проблема, почему то в Windows XP не работает следующий код, который прекрасно работает под Win 7:


program Project1;

{$APPTYPE CONSOLE}

uses
 Windows,
 SysUtils,
 Registry;

const
 sKey: string = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";//\

var
REG: TRegistry;
I: Integer;
TimeZoneInfo: TTimeZoneInformation;
D: TDateTime;

function DateTimeToLocalDateTime(DateTime: TDateTime): TDateTime;
begin
 case GetTimeZoneInformation(TimeZoneInfo) of
   TIME_ZONE_ID_STANDARD:
     Result := DateTime - (TimeZoneInfo.Bias / 60 / 24);
   TIME_ZONE_ID_DAYLIGHT:
     Result := DateTime - ((TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias) / 60 / 24);
 else
   Result := 0;
 end;
end;

procedure FileTimeToDateTime(ft: TFileTime; var dt: TDateTime);
var
 SystemTime: TSystemTime;
 FileTime: TFileTime;
begin
 if FileTimeToLocalFileTime(ft, FileTime) then
 begin
   FileTimeToSystemTime(ft, SystemTime);
   dt := SystemTimeToDateTime(SystemTime);
 end;
end;

function GetKeyDateTime(cKey: string): TDateTime;
var
 RegKeyInfo: TRegKeyInfo;
 RegDate: TDateTime;
begin
 Reg.GetKeyInfo(RegKeyInfo);
 with RegKeyInfo do
 begin
   FileTimeToDateTime(FileTime, RegDate);
   RESULT := DateTimeToLocalDateTime(RegDate);
 end;
end;

begin
REG:= TRegistry.Create;
try
REG.RootKey := HKEY_LOCAL_MACHINE;
if REG.OpenKeyReadOnly(sKey + "\" + "{1A352E3E-9E02-42EC-8465-76A56095C871}") then
begin
D := GetKeyDateTime(sKey + "\" + "{1A352E3E-9E02-42EC-8465-76A56095C871}");
Writeln("Key DATA: " + DateTimeToStr(D));
REG.CloseKey;
end else
Writeln("Cannot open key");
finally
REG.Free;
end;
//
Readln;
end.


Пожалуйста, помогите поправить код, чтобы он корректно работал нетолько в Win 7, но и в Win XP.

IDE: CodeGear 2009


 
clickmaker ©   (2009-06-26 18:33) [1]

> не работает следующий код

что значит "не работает"? какие ошибки выдает?


 
Vayrus   (2009-06-26 19:06) [2]

Выдает дату: 30.12.1899


 
Anatoly Podgoretsky ©   (2009-06-26 19:13) [3]

Нормальная дата.


 
Vayrus   (2009-06-26 19:22) [4]

Я прохожу по всем ключам деинсталляции и все они одной даты - это не нормально, когда как в Win 7 все даты создания ключа разные и они соотвествуют дате установки приложений.


 
Игорь Шевченко ©   (2009-06-26 22:55) [5]


> Выдает дату: 30.12.1899


какой кошмар!


 
Palladin ©   (2009-06-26 22:59) [6]

просто ужас какой то, а чего ожидалось то?


 
Vayrus   (2009-06-26 23:17) [7]


> просто ужас какой то, а чего ожидалось то?


Я прохожу по всем ключам деинсталляции и все они одной даты - это не нормально, когда как в Win 7 все даты создания ключа разные и они соотвествуют дате установки приложений.


 
Vayrus   (2009-06-26 23:18) [8]


> какой кошмар!


Не в тему


 
Palladin ©   (2009-06-26 23:27) [9]

не в тему? ) предлагаю провести весь вышеприведенный код ниже, но с комментариями автора


 
Игорь Шевченко ©   (2009-06-26 23:44) [10]


> Я прохожу по всем ключам деинсталляции и все они одной даты
> - это не нормально


одно из двух - либо не туда проходишь, либо они все одной даты.

Ты программист или поклянчить на форум пришел ? Отладчик для вас сделан специально, дабы каждый экземпляр мог пропустить свой кривой код по шагам и увидеть полученные значения и ожидаемые.


 
Vayrus   (2009-06-27 09:39) [11]


> либо они все одной даты.


Не должны, так как данный код изначально был ориентирован на Win XP, но там так и не заработал, возвращая для всех ключей одно и то же значение, а вот в Win 7 все работает так как и ожидалось. Возможно, я не учел особенности реестра Win XP.


> Ты программист


Я не программист по определению и неумею пользоваться отладчиком, некому меня научить им пользоваться, я самоучка-любитель.


> кривой код


Укажите на кривость, где его Вы тут узрели - на ошибках учатся.


 
Игорь Шевченко ©   (2009-06-27 12:48) [12]


> Я не программист по определению и неумею пользоваться отладчиком,
>  некому меня научить им пользоваться, я самоучка-любитель.
>


Найми программиста, который умеет


 
Vayrus   (2009-06-27 13:00) [13]


> Найми программиста, который умеет


Ожидаемый ответ и легко сказать "найми программиста", дайте денег - найму, "инициатива нагибает инициатора"))


 
Игорь Шевченко ©   (2009-06-27 13:07) [14]

Изучай:

http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
Anatoly Podgoretsky ©   (2009-06-27 13:14) [15]

> Vayrus  (27.06.2009 13:00:13)  [13]

Денег на халяву не даем.


 
Vayrus   (2009-06-27 13:22) [16]


> Денег на халяву не даем.


В курсе, могли бы и не утруждать себя данным ответом, а то начинаю чувствовать себя телепатом)


 
Vayrus   (2009-06-27 13:22) [17]


> Изучай:
>
> http://ln.com.ua/~openxs/articles/smart-questions-ru.html


Ну хоть что то дельное



Страницы: 1 вся ветка

Текущий архив: 2009.08.30;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
10-1158414306
AAAA
2006-09-16 17:45
2009.08.30
TDCOMConnection. Создал


2-1246386849
AndrewG
2009-06-30 22:34
2009.08.30
Modal


1-1213076858
Альф
2008-06-10 09:47
2009.08.30
Странное поведение Variant при импорте из Excel


15-1246394110
Юрий
2009-07-01 00:35
2009.08.30
С днем рождения ! 1 июля 2009 среда


2-1246613642
Гость
2009-07-03 13:34
2009.08.30
XML Парсер