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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Regedit HEX DWORD, запись 
:(
    Опции темы
ВоВеЦ
Дата 22.8.2006, 04:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подскажите какой командой записываются HEX и DWORD значенния в реестр, в DRKB не нашёл ответ на мой вапрос, а в поисковиках муть какая та...
PM MAIL   Вверх
Fedia
Дата 22.8.2006, 04:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Код

var
  i: Integer;
  reg: TRegistry;
  ar: array [0..7] of Byte;
begin
  for i:=65 to 72 do
  ar[i-65]:=i;
  reg:=TRegistry.Create;
  reg.RootKey:=HKEY_LOCAL_MACHINE;
  if reg.OpenKey('\SOFTWARE\Test', false) then
  begin
    //для HEX (Binary)
    reg.WriteBinaryData('testBin', ar, 8);
    //для DWORD
    reg.WriteInteger('testInt', 1234);
    reg.CloseKey;
  end;
  FreeAndNil(reg);
end;



--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
ВоВеЦ
Дата 22.8.2006, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Fedia спасиб, только одно непонятно, если у меня такое значение hex:00,00,00,00 то как его записать в regedit?
PM MAIL   Вверх
Alexeis
Дата 22.8.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Код

reg.WriteBinaryData('testBin', $00000000, 4);



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ВоВеЦ
Дата 22.8.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



[Error] Unit1.pas(63): Constant object cannot be passed as var parameter 

                                                             smile 

Чёт ему не дравится в этой строчке, что то надо объяыить const, а вот что не ясно?


Это сообщение отредактировал(а) ВоВеЦ - 22.8.2006, 18:50
PM MAIL   Вверх
Fedia
Дата 22.8.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



ВоВеЦ, да также, только длину массива можно сделать равной 4-м и последний параметр процедуры WriteBinaryData также должет быть 4.
Код

var    
  i: Integer;
  reg: TRegistry;
  ar: array [0..3] of Byte;
begin
  for i:=0 to 3 do
  ar[i]:=0;
  reg:=TRegistry.Create;
  reg.RootKey:=HKEY_LOCAL_MACHINE;
  if reg.OpenKey('\SOFTWARE\Test', false) then
  begin
    //äëÿ HEX (Binary)
    reg.WriteBinaryData('testBin', ar, 4);
    reg.CloseKey;
  end;
  FreeAndNil(reg);
end;


Добавлено @ 22:34 
Цитата(ВоВеЦ @  22.8.2006,  18:49 Найти цитируемый пост)
Чёт ему не дравится в этой строчке, что то надо объяыить const, а вот что не ясно?

$00000000 - константа, а для процедуры WriteBinaryData нужна переменная.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
ВоВеЦ
Дата 23.8.2006, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



С нулями то ясно, спасиб за подсказку, но если мне нужно значение $56130000  к примеру то тут как быть? Пробывал так
Код

const
 ar: array [0..3] of Byte = (56, 13, 00, 00);
begin
  reg:=TRegistry.Create;
  reg.RootKey:=HKEY_LOCAL_MACHINE;
  reg.OpenKey(''\SOFTWARE\Test'', false);
  reg.WriteBinaryData('testBin', ar, 4);
  reg.CloseKey;
  FreeAndNil(reg);
end;


или задавал константу C = $56130000, строчка записи так выглядела   reg.WriteBinaryData('testBin', С, 4); 
Всё равно вылетает ошибка 2мя постами выше... smile 
PM MAIL   Вверх
Fedia
Дата 23.8.2006, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Код

var     
  ar: array [0..3] of Byte;
  //...
  ar[0]:=$56; ar[1]:=$13; ar[2]:=0; ar[3]:=0;
  //...
    reg.WriteBinaryData('testBin', ar, 4);



--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
ВоВеЦ
Дата 23.8.2006, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Fedia thank you!
Цитата
$00000000 - константа, а для процедуры WriteBinaryData нужна переменная. 

Как то внимания осбого не обратил=)


Это сообщение отредактировал(а) ВоВеЦ - 23.8.2006, 00:27
PM MAIL   Вверх
Fedia
Дата 23.8.2006, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Нашел еще один способ попроще:
Код

var
  value: Integer;
  //...
  value:=$00001356;
  //...
    reg.WriteBinaryData('testBin', value, 4);

Кто-нибудь знает эффективный способ преобразования значения $56130000 в $00001356 ?

Это сообщение отредактировал(а) Fedia - 23.8.2006, 00:46


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
dumb
Дата 23.8.2006, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(Fedia @  23.8.2006,  00:41 Найти цитируемый пост)
Кто-нибудь знает эффективный способ преобразования значения $56130000 в $00001356 ?

bswap, но в данном случае это не нужно - при использовании переменной типа Integer, она в памяти уже "лежит" как надо. т.е. если надо записать $56130000, то так и делать:
Код

value := $56130000;
reg.WriteBinaryData('testBin', value, sizeof(value));

PM MAIL   Вверх
Fedia
Дата 23.8.2006, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Цитата(dumb @  23.8.2006,  03:03 Найти цитируемый пост)
bswap, но в данном случае это не нужно - при использовании переменной типа Integer, она в памяти уже "лежит" как надо. т.е. если надо записать $56130000, то так и делать:

Неправда, в этом случае в реестр ляжет 00 00 13 56. Так я сразу попробовал smile


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
dumb
Дата 23.8.2006, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(Fedia @  23.8.2006,  03:11 Найти цитируемый пост)
Неправда, в этом случае в реестр ляжет 00 00 13 56. Так я сразу попробовал

ты потом как читать будешь? - как строку чтоль?! user posted image
PM MAIL   Вверх
Fedia
Дата 23.8.2006, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Цитата(dumb @  23.8.2006,  03:18 Найти цитируемый пост)
ты потом как читать будешь? - как строку чтоль?! 

Могу прочитать как массив. Могу значение для сторонней проги в реестр записать. Согласись, что 00 00 13 56 и 56 13 00 00 нифига не одно и тоже smile Требуется одно, а ты предлагаешь другое. Так что суди сам  smile

Это сообщение отредактировал(а) Fedia - 23.8.2006, 03:24


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
ВоВеЦ
Дата 24.8.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А что делать если константа имеет длинное значение к примеру

Код
 $250043003A006B000000C5C00570049004E0044004F00570053005C0073007600630068006F00730074002E00650078006500220020002F0073006500720076006900630065000000;


Разбивать их на маленькие константы, а потом соединять их не самая лучшая затея, есть варианты попроще?
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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