Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.05.2011, 19:57
xrpcompany xrpcompany вне форума
Прохожий
 
Регистрация: 30.04.2011
Сообщения: 16
Репутация: 10
По умолчанию Запись в реестр бинарное значение

Доброе времени суток! Мне необходимо записать в реестр бинарное значение виде 00 00 32 45 00 00 32, без TRegistry, но у меня не как не получается вот код:
Код:
function RegWriteBinary(RootKey: HKEY; Key, Name:string; Value: string): Boolean;
var
  Handle: HKEY;
  Res: LongInt;
begin
  Result := False;
  Res := RegCreateKeyEx(RootKey, PChar(Key), 0, nil, REG_OPTION_NON_VOLATILE,
    KEY_ALL_ACCESS, nil, Handle, nil);
  if Res <> ERROR_SUCCESS then
    Exit;
  Res :=RegSetValueEx(Handle, PChar(Name), 0, REG_BINARY, @Value, 20);
  Result := Res = ERROR_SUCCESS;
  RegCloseKey(Handle);
end;
Админ: Пользуемся тегами для оформления кода!

Помогите пожалуйста!

Последний раз редактировалось Admin, 10.05.2011 в 20:28.
Ответить с цитированием
  #2  
Старый 10.05.2011, 20:46
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Мне почему-то кажется, что BINARY значение должно быть не адресом строки (т.к. Value - УКАЗАТЕЛЬ на строку, и @Value вернет адрес указателя), а набором байт (массивом, буфером).
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 10.05.2011, 23:50
xrpcompany xrpcompany вне форума
Прохожий
 
Регистрация: 30.04.2011
Сообщения: 16
Репутация: 10
По умолчанию

А как реализовать этот код ? У меня и так то же не получилось
Ответить с цитированием
  #4  
Старый 11.05.2011, 00:55
Raskolnikov Raskolnikov вне форума
Прохожий
 
Регистрация: 20.04.2011
Адрес: Киров
Сообщения: 35
Версия Delphi: 7 Enterprise
Репутация: 148
По умолчанию

Если пишешь бинарное значение, лучше без string обойтись.
Саму процедуру можно сделать такой:

Код:
function RegWriteBinary(RootKey: HKEY; Key, Name:string; const Value; Size: Integer): Boolean;
var
  Handle: HKEY;
  Res: LongInt;
begin
  Result := False;
  Res := RegCreateKeyEx(RootKey, PChar(Key), 0, nil, REG_OPTION_NON_VOLATILE,
    KEY_ALL_ACCESS, nil, Handle, nil);
  if Res <> ERROR_SUCCESS then
    Exit;
  Res :=RegSetValueEx(Handle, PChar(Name), 0, REG_BINARY, @Value, Size);
  Result := Res = ERROR_SUCCESS;
  RegCloseKey(Handle);
end;

А вызывать ее например так:
Код:
const
  DataSize = 7;
  Data: array[1..DataSize] of Byte= (00, 00, 32, 45, 00, 00, 32);
begin
  RegWriteBinary(HKEY_CURRENT_USER, 'Test', 'foo', Data, DataSize);
end;
Ответить с цитированием
  #5  
Старый 11.05.2011, 01:29
xrpcompany xrpcompany вне форума
Прохожий
 
Регистрация: 30.04.2011
Сообщения: 16
Репутация: 10
По умолчанию

Спасибо большое!!!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025