很简单,建立一个字符串-常量的对照表即可
var
ConstList:TStringList=nil;
procedure InitConstList;
//初始化对照表
begin
ConstList:=TStringList.Create;
ConstList.AddObject('HKEY_CLASSES_ROOT',TObject(HKEY_CLASSES_ROOT));
ConstList.AddObject('HKEY_CURRENT_USER',TObject(HKEY_CURRENT_USER));
ConstList.AddObject('HKEY_LOCAL_MACHINE',TObject(HKEY_LOCAL_MACHINE));
ConstList.AddObject('HKEY_USERS',TObject(HKEY_USERS));
ConstList.AddObject('HKEY_PERFORMANCE_DATA',TObject(HKEY_PERFORMANCE_DATA));
//...
end;
function GetValueByStr(const NameStr:String)
Word;
var
n:Integer;
begin
if ConstList=nil then
InitConstList;
n:=ConstList.IndexOf(NameStr);
if n>=0 then
Result:=DWord(ConstList.Objects[n])
else
Result:=0;
//如果失败,返回0 ——当然,你也可以定义为其它值
end;
eg:
Root:=GetValueByStr('HKEY_CLASSES_ROOT');