| 
| 
 | Вопрос # 1 248/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Как прочесть значение типа Binary из реестра, и, если это не сложно, представить его как в Hex редакторе?
 
|  |   Вопрос задал: Евгений Eklmn (статус: Посетитель)Вопрос отправлен: 30 декабря 2007, 19:02
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Feniks Здравствуйте, Трофимов Евгений!Все очень просто. Кладем на форму кнопку Button1 и Memo1. На кнопку делаем обработчик:
 
 procedure TForm1.Button1Click(Sender: TObject);
var
Reg : TRegistry;
buf : array of byte;
i   : Integer;
 
begin
   Reg := TRegistry.Create;
   try
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKey('\Software\Feniks', True) then
      begin
         SetLength(Buf, Reg.GetDataSize('Value'));
         Reg.ReadBinaryData('Value', buf[1], Reg.GetDataSize('Value'));
         Reg.CloseKey;
         for i := 1 to Length(buf) do
            Memo1.Text := Memo1.Text + '$' + IntToStr(Buf[i]) + ' ';
      end;
   finally
      Reg.Free;
   end;
end;И наступит Вам счастье... ;-)С Новым Годом Вас !!!
 
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 3 января 2008, 12:12
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо! Вас тоже с Новым Годом! |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 3 января 2008, 12:20; участников в обсуждении: 1. 
|   | Feniks (статус: Бакалавр), 3 января 2008, 12:20 [#1]:В поле Memo выводятся значения в десятичном формате. Для перевода из Десятичной в Шеснадцатиричную систему можно использовать фугкцию: 
 function dec2hex(value: dword): string[8];
const
hexdigit = '0123456789ABCDEF';
begin
while value <> 0 do
begin
   dec2hex := hexdigit[succ(value and $F)];
   value := value shr 4;
end;
if dec2hex = '' then dec2hex := '0';
end;Тогда строка будет такой: 
 Memo1.Text := Memo1.Text + '$' + dec2hex(Buf[i]) + ' '; |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |