⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regvar.pas

📁 注册表可视化读取DELPHI控件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
                                        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 + -