![]() |
|
#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. |