📄 regvar.pas
字号:
case V_RegFields[NumeroItem].V_VarType of
rvt_Bool : V_RegFields[NumeroItem].V_RegValue := Reg.ReadBool(V_RegFields[NumeroItem].V_RegField);
rvt_Currency : V_RegFields[NumeroItem].V_RegValue := Reg.ReadCurrency(V_RegFields[NumeroItem].V_RegField);
rvt_Date : V_RegFields[NumeroItem].V_RegValue := Reg.ReadDate(V_RegFields[NumeroItem].V_RegField);
rvt_DateTime : V_RegFields[NumeroItem].V_RegValue := Reg.ReadDateTime(V_RegFields[NumeroItem].V_RegField);
rvt_Time : V_RegFields[NumeroItem].V_RegValue := Reg.ReadTime(V_RegFields[NumeroItem].V_RegField);
rvt_Float : V_RegFields[NumeroItem].V_RegValue := Reg.ReadFloat(V_RegFields[NumeroItem].V_RegField);
rvt_Integer : V_RegFields[NumeroItem].V_RegValue := Reg.ReadInteger(V_RegFields[NumeroItem].V_RegField);
rvt_String : V_RegFields[NumeroItem].V_RegValue := Reg.ReadString(V_RegFields[NumeroItem].V_RegField);
end;
end
else
begin
ReadError := True;
end;
end;
end;
if ReadError then
begin
if V_WriteOnDef then
begin
WriteOne(V_RegFields[NumeroItem]);
ReadError:=False;
end;
end;
end;
Reg.Free ;
end;
///////////////////////////////writeone
procedure TRegVar.WriteOne(Value:TRegField);
var
NumeroItem : integer;
Reg : TRegistry;
WriteError : boolean;
ErrorType : TARERegistryErrorType;
Param : string;
begin
if V_RegistryKeys.Count = 0 then
exit;
Reg := TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if Reg.RegistryConnect('\\'+V_ComputerName) then ConnectError:=False
else ConnectError:=True;
case V_RootRegistryKey of
rgk_HKEY_CLASSES_ROOT: Reg.RootKey := HKEY_CLASSES_ROOT;
rgk_HKEY_CURRENT_USER: Reg.RootKey := HKEY_CURRENT_USER;
rgk_HKEY_LOCAL_MACHINE: Reg.RootKey := HKEY_LOCAL_MACHINE;
rgk_HKEY_CURRENT_CONFIG: Reg.RootKey := HKEY_CURRENT_CONFIG;
end;
if Reg.RegistryConnect('\\'+V_ComputerName) then
ConnectError:=False
else
ConnectError:=True;
WriteError := False;
NumeroItem := 0;
Param := '';
ErrorType := AR_ErrorNone;
repeat
if not Reg.OpenKey(V_RegistryKeys.Items[NumeroItem].RegistryKey,True) then
begin
WriteError := True;
Param := V_RegistryKeys.Items[NumeroItem].RegistryKey;
ErrorType := ERR_Write_KeyNotFound;
break;
end;
inc(NumeroItem);
until NumeroItem = V_RegistryKeys.Count;
if not WriteError then
begin
case Value.V_VarType of
rvt_Bool:
begin
try
Reg.WriteBool(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
rvt_Currency:
begin
try
Reg.WriteCurrency(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
rvt_Date:
begin
try
Reg.WriteDate(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
rvt_DateTime:
begin
try
Reg.WriteDateTime(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
rvt_Time:
begin
try
Reg.WriteTime(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
rvt_Float:
begin
try
Reg.WriteFloat(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
rvt_Integer:
begin
try
Reg.WriteInteger(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
rvt_String:
begin
try
Reg.WriteString(Value.V_RegField,Value.RegValue);
except
WriteError := True;
end;
end;
end;
if WriteError then
begin
Param := Value.V_RegField;
ErrorType := ERR_Write_Value;
end;
end;
if WriteError then
begin
if Assigned(V_ErrorNotify) then
begin
V_ErrorNotify(Self,ErrorType,Param);
end;
end;
Reg.Free;
end;
procedure TRegVar.WriteTo;
var
Number: integer;
begin
if V_RegFields.Count =0 then
exit;
for Number:=0 to V_RegFields.Count-1 do
WriteOne(V_RegFields[Number]);
end;
function TRegVar.V_KeyCount: integer;
begin
V_KeyCount := V_RegistryKeys.Count;
end;
function TRegVar.ExistVariable(aField:TRegField): boolean;
var
NumeroItem : integer;
Reg : TRegistry;
begin
if V_RegistryKeys.Count = 0 then
begin
ExistVariable := False;
exit;
end;
Reg := TRegistry.Create;
case V_RootRegistryKey of
rgk_HKEY_CLASSES_ROOT: Reg.RootKey := HKEY_CLASSES_ROOT;
rgk_HKEY_CURRENT_USER: Reg.RootKey := HKEY_CURRENT_USER;
rgk_HKEY_LOCAL_MACHINE: Reg.RootKey := HKEY_LOCAL_MACHINE;
rgk_HKEY_CURRENT_CONFIG: Reg.RootKey := HKEY_CURRENT_CONFIG;
end;
NumeroItem := 0;
repeat
if not Reg.OpenKey(V_RegistryKeys.Items[NumeroItem].RegistryKey,V_RegistryKeys.Items[NumeroItem].CreateKey) then
begin
ExistVariable := False;
exit;
end;
inc(NumeroItem);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -