Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.06.2008, 00:33
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание Опять Реестр....

Как проверять найденый ключь являеться ли 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  
Старый 17.06.2008, 12:16
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

function TRegistry.GetDataType(const ValueName: String): TRegDataType;

type TRegDataType = (rdUnknown, rdString, rdExpandString, rdInteger, rdBinary);
Ответить с цитированием
  #3  
Старый 17.06.2008, 22:11
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Что же я делаю не так помогите..
Код:
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  
Старый 18.06.2008, 12:05
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

У меня всё работает. Результат: 'String'. Только ошибка в константе, надо 'rdExpandString' (а не Expanded).
Ответить с цитированием
  #5  
Старый 18.06.2008, 22:18
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Или я чтот торможу или чтот делаю не так - а почему оно у меня не хочит идти на компиляцию
Ответить с цитированием
  #6  
Старый 19.06.2008, 12:31
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Нужно убрать строку
type TRegDataType = (rdUnknown...
Этот тип уже описан в стандартном модуле Registry.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:24.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025