冥界3大法王 发表于 2022-12-14 13:55

求教 注册表类型 该用哪种转换Edit123.text的内容?

本帖最后由 冥界3大法王 于 2022-12-14 23:00 编辑



procedure TMonitor_Form.Button1Click(Sender: TObject);
var
reg: TRegistry;
begin//下面的部分类型转换有问题待解决
reg := TRegistry.Create;
reg.RootKey :=Edit1.text;                     //设置注册表根路径
reg.OpenKey(Edit2.text.Text), False);   //。。。。。。。。。以下分支
if not reg.ValueExists(Edit3.Text) then
begin
    ShowMessage('注册表键值不存在');
   // reg.WriteString('User', 'UserID')
end
else
begin
    ShowMessage('存在执行的操作');
   // Edit1.Text := reg.ReadString('User');
end;
reg.Free;
end;

bester 发表于 2022-12-14 14:15

RootKey是一个整型数值,转个弯好不好,判断一下字符串是否为"HKEY_LOCAL_MACHINE",然后如果字符串相等 然后RooyKey=HKEY_LOCAL_MACHINE

bin2163239 发表于 2022-12-14 16:19

reg.RootKey :=String(Edit1.text);www

o594cql 发表于 2022-12-14 17:00

reg.RootKey :=HKEY(Edit1.text);

delphi 源代码是这样定义HKEY
{$EXTERNALSYM HKEY}
HKEY = type UINT_PTR;

{$OBJTYPENAME HKEY 'Bp6HKEY__'}


PHKEY = ^HKEY;

const
{ Reserved Key Handles. }

{$EXTERNALSYM HKEY_CLASSES_ROOT}
HKEY_CLASSES_ROOT   = HKEY(Integer($80000000));
{$EXTERNALSYM HKEY_CURRENT_USER}
HKEY_CURRENT_USER   = HKEY(Integer($80000001));
{$EXTERNALSYM HKEY_LOCAL_MACHINE}
HKEY_LOCAL_MACHINE    = HKEY(Integer($80000002));
{$EXTERNALSYM HKEY_USERS}
HKEY_USERS            = HKEY(Integer($80000003));
{$EXTERNALSYM HKEY_PERFORMANCE_DATA}
HKEY_PERFORMANCE_DATA = HKEY(Integer($80000004));
{$EXTERNALSYM HKEY_CURRENT_CONFIG}
HKEY_CURRENT_CONFIG   = HKEY(Integer($80000005));
{$EXTERNALSYM HKEY_DYN_DATA}
HKEY_DYN_DATA         = HKEY(Integer($80000006));


{$EXTERNALSYM PROVIDER_KEEPS_VALUE_LENGTH}
PROVIDER_KEEPS_VALUE_LENGTH = 1;

其实就是数值常量,这样判断会非常复杂,edit1中的值打错一个字母都会出错。
页: [1]
查看完整版本: 求教 注册表类型 该用哪种转换Edit123.text的内容?