我有一个Delphi XE2项目来检查注册表项MyCompanyName\1中的一个十六进制值.如果十六进制值为13,那么其他一些消息就会出现在那里.
所以我定义了以下代码:
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
RegistryEntry : TRegistry;
begin
RegistryEntry := TRegistry.Create(KEY_READ or KEY_WOW64_64KEY);
RegistryEntry.RootKey := HKEY_LOCAL_MACHINE;
if (RegistryEntry.KeyExists('SOFTWARE\MyCompanyName\1\')) then
begin
if (RegistryEntry.OpenKey('SOFTWARE\MyCompanyName\1\',true)) then
begin
if (RegistryEntry.ReadString('SettingValue') = '0x00000013') then
begin
Memo01.Lines.Add('SettingHexadeciamlValue exist properly')
end
else
begin
Memo01.Lines.Add('SettingHexadeciamlValue does not exist properly')
end;
end
else
begin
if (RegistryEntry.OpenKey('SOFTWARE\MyCompanyName\1\',false)) then
begin
Memo01.Lines.Add('Unable to read RegistryKey ''MyCompanyName''Exiting.......')
end;
end;
end
else
begin
Memo01.Lines.Add('RegistryKey ''MyCompanyName'' does not exist')
end;
end;
Run Code Online (Sandbox Code Playgroud)
编译后,当我运行应用程序AsAdministrator时,我收到错误,提到'SettingValue'的无效数据类型.
这些值是整数,而不是字符串,所以你应该使用ReadInteger,而不是ReadString.
现在,十六进制只是向用户呈现整数的一种方式,即,创建整数的"文本表示"的方法.例如,整数62具有许多不同的文本表示:
62 (decimal)
LXII (Roman numerals)
3E (hexadecimal)
111110 (binary)
Sextiotvå (Swedish words)
Run Code Online (Sandbox Code Playgroud)
等等
如果要以十六进制显示此数字regedit.exe,则可以使用该IntToHex函数,该函数创建参数整数的十六进制文本表示形式.例:
var
myvalue: integer;
...
myvalue := ReadInteger('SettingValue');
ShowMessage(IntToHex(myvalue, 8));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |