![]() |
|
|
#1
|
||||
|
||||
|
Как проверять найденый ключь являеться ли DWORD-ом?
Код:
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Key := '\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\Explorer\Advanced';
if Reg.OpenKeyReadOnly(Key) then
begin
if Reg.ValueExists('Hidden') then //проверяем Hidden
begin
RegKey := Reg.ReadInteger('Hidden');
Reg.CloseKey;
edit1.Text :=IntToStr(RegKey);
end;
end;
finally
Reg.Free
end;Проблема в том что если тип ключа Hidden не окажеться DWORD-ом а простым строковым параметром то прога даст ощибку - как проверить тип ключа??? |
|
#2
|
|||
|
|||
|
function TRegistry.GetDataType(const ValueName: String): TRegDataType;
type TRegDataType = (rdUnknown, rdString, rdExpandString, rdInteger, rdBinary); |
|
#3
|
||||
|
||||
|
Что же я делаю не так помогите..
Код:
unit Unit1;
interface
uses
Windows, Messages, registry, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type TRegDataType = (rdUnknown, rdString, rdExpandString, rdInteger, rdBinary);
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
function GetDataType(const ValueName: string): TRegDataType;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MyReg: TRegistry;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
MyDatainfo: TRegDataInfo;
MyString: string;
begin
MyReg := TRegistry.Create;
MyReg.RootKey := HKEY_LOCAL_MACHINE;
MyReg.OpenKey('\SOFTWARE\Microsoft\Windows NT\CurrentVersion',FALSE);
MyDataInfo.RegData := MyReg.GetDataType('RegisteredOrganization');
case MyDataInfo.RegData of
rdUnknown : Label1.Caption := 'Unknown';
rdString : Label1.Caption := 'String';
rdExpandedString: Label1.Caption := 'Expanded string';
rdInteger: Label1.Caption := 'Integer';
rdBinary: Label1.Caption := 'Binary';
end;
end;
end. |
|
#4
|
|||
|
|||
|
У меня всё работает. Результат: 'String'. Только ошибка в константе, надо 'rdExpandString' (а не Expanded).
|
|
#5
|
||||
|
||||
|
Или я чтот торможу или чтот делаю не так - а почему оно у меня не хочит идти на компиляцию
![]() |
|
#6
|
|||
|
|||
|
Нужно убрать строку
type TRegDataType = (rdUnknown... Этот тип уже описан в стандартном модуле Registry. |