![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть значение dword. Довольно большое. Если считывать readinteger то не катит потому что он читает в 16 системе и выдает ерунду. Как считать это же значение в десятичной системе или считать в 16 и преобразовать в десятичную?
|
|
#2
|
||||
|
||||
|
Вот мой пример чтения DWORD из реестра. У меня считалось без проблем.
Код:
uses
Registry;
// Прочитать REG_DWORD
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
RegKey: DWORD;
Key: string;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKLM;
Key := 'Место откуда читать DWORD';
if Reg.OpenKeyReadOnly(Key) then
begin
if Reg.ValueExists('Значение DWORD') then
begin
RegKey := Reg.ReadInteger('Значение DWORD');
Reg.CloseKey;
ShowMessage(IntToStr(RegKey));
end;
end;
finally
Reg.Free
end;
end; |
|
#3
|
||||
|
||||
|
А ReadBinaryData не подойдет?
|
|
#4
|
|||
|
|||
|
2 moo2k я ж сказал этим способом число 4000 не считаешь. 2 4kusNick пример использования есть?
просто мне всегда хватало ReadInteger. Щас практика началась поэтому пока забросил это дело. Но все же интересно |
|
#5
|
||||
|
||||
|
Вообще-то ты путаешь DWORD и Integer; Это два разных типа. Мой пример все-таки подходит. В примере ясно видно же, что я присваю переменной RegKey тип DWORD, а не Integer.
|
|
#6
|
||||
|
||||
|
Цитата:
Все правильно, если DWORD будет больше чем 4 байта числа со знаком то не полезет в интегер. У интегера старший бит - значение знака. А у ДВОРД все биты значащие. |
|
#7
|
|||
|
|||
|
Да точно. Спросонья не разглядел что тип dword. Пытался в интегер пихнуть. Все работает. Спасиба
![]() |