Страница 1 из 1
TRegistry.ReadBinaryData - как правильно пользоваться?
Добавлено: 12 апр 2009, 15:25
Dr_Grizzly
Всем привет! Такая вот проблемка, не могу прочитать значение параметра из реестра с типом REG_DWORD.....
Какое значение нужно указать в функции ReadBinaryData в переменной Buffer и BufSize???
Заранее благодарен

Re: TRegistry.ReadBinaryData - как правильно пользоваться?
Добавлено: 13 апр 2009, 10:55
Игорь Акопян
DWORD = 32-bit unsigned integer. 4 байта соответственно
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
только не понятно, зачем для чтения целого числа использовать ReadBinaryData если есть ReadInteger?
Re: TRegistry.ReadBinaryData - как правильно пользоваться?
Добавлено: 13 апр 2009, 17:16
Dr_Grizzly
Ну вот! Точняк, что-то у меня не получалось до этого, наверное потомучто использовал strtofloat() а не strtoint(). Ща попробовал еще раз, и получилось получить данные через ReadInteger... Благодарю!
Вот код кому интересно:
Код: Выделить всё
Function Regedit(RootKey:Integer; Path:String='Îáÿçàòåëüíî'; CanCreat:boolean=false;WrString:String=''; Value:String=''; RdString:String=''; CanDelete:boolean=false; Allparam:boolean=false;AllKey:boolean=false):String;
var
Reg: TRegistry;
Val: TStringList;
begin
Reg:=TRegistry.Create;
try
Val:=TstringList.Create;
try
Case Rootkey of
1:Reg.RootKey:=HKEY_CURRENT_USER;
2:Reg.RootKey:=HKEY_LOCAL_MACHINE;
3:Reg.RootKey:=HKEY_CLASSES_ROOT;
4:Reg.RootKey:=HKEY_USERS;
5:Reg.RootKey:=HKEY_CURRENT_CONFIG
else
Reg.RootKey:=HKEY_CURRENT_USER;
end;
Reg.OpenKey(Path,CanCreat);
begin
Reg.GetValueNames(Val);
If WrString<>'' then
begin
If (reg.GetDataType(WrString)=rdInteger) or(reg.GetDataType(WrString)=rdBinary ) then
Reg.WriteInteger(WrString,StrToInt(Value))
else
Reg.WriteString(WrString,Value);
Regedit:='Ïðîèçâåäåíà ïîïûòêà çàïèñè â ðååñòð';
end;
If RdString<>'' then
If (reg.GetDataType(RdString)=rdInteger) or(reg.GetDataType(RdString)=rdBinary ) then
RegEdit:=FloatToStr(Reg.ReadInteger(RdString))
else
RegEdit:=Reg.ReadString(RdString);
If allparam=true then
reg.GetValueNames(form1.Listbox1.Items);
If allkey=true then
reg.GetKeyNames(form1.Listbox1.Items);
If CanDelete=true then
reg.DeleteValue(RdString);
end;
Finally
Val.Free;
end;
Finally
Reg.Free;
end;
end;
Мысля появилась создать некий редактор реестра, т.к. в последнее время вирусы одалели моих знакомых, которые пишут в реестр блокировки разного рода, после чего стандартными средствами не добраться... а вот через win32api можно ))))))
Re: TRegistry.ReadBinaryData - как правильно пользоваться?
Добавлено: 15 апр 2009, 21:16
Duncon
Велосипед не изобретай всевозможных мониторов реестра уже давно и много понаписанно