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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.02.2010, 19:37
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию реестр. имя первого подраздела.

Нужно узнать имя первого подраздела в реестре. т.к. у каждого юзера это имя уникальное, знать его точно не могу.
Слышал есть функция RegEnumKey но ничего с ней непонятно
Код:
PHP код:
r:=treginifile.create();
r.RootKey:=HKEY_LOCAL_MACHINE;
r.OpenKey('system'true);
r.OpenKey('currentcontrolset'true);
r.OpenKey('enum'true);
r.OpenKey('pci'true); 
как узнать имя первого подраздела в разделе PCI?
Ответить с цитированием
  #2  
Старый 15.02.2010, 22:12
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

когда то делал так лет 7 назад:
Код:
var
  Reg: TRegistry;
  Keys: TStringList;
begin
  Reg := TRegistry.Create;
  Keys := TStringList.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('\SYSTEM\CurrentControlSet\Enum\PCI\',False);
  Reg.GetKeyNames(Keys);
  Reg.CloseKey;

  ShowMessage(Keys[0]); //первый элемент
  Keys.Free;
end;

помоему так...

Последний раз редактировалось Ultras, 16.02.2010 в 01:05.
Ответить с цитированием
  #3  
Старый 15.02.2010, 23:01
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Да я тоже когда то получал список так.
Только столкнулся с небольшой ошибкой с файле Registry.pas
( точнее приминяемая АПИшная функция RegQueryInfoKey иногда выдавала MaxSubKeyLen на 1-2 байта меньше )
из-за которой список некоторые имена подключей выдавал неправильные.
Недавно посмотрел в Delphi 2010 тоже не исправили.

После небольшой правки, все стало работать. Файл прилагаю, бросать в папку с проектом.
Вложения
Тип файла: zip Registry.zip (5.7 Кбайт, 8 просмотров)
Ответить с цитированием
  #4  
Старый 15.02.2010, 23:20
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

Ultras
При компиляции пишет, List index out of bonds (0) судя по всему где-то есть опечатка с стринглистом.
Ответить с цитированием
  #5  
Старый 15.02.2010, 23:29
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Похоже список у тебя пустой или ключ не открылся.
Попробуй
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  i, k: Integer;
  DReg: TRegistry;
  DestSubKeys: TStringList;
begin
  DReg := TRegistry.Create(KEY_READ);
  try
    DReg.RootKey := HKEY_LOCAL_MACHINE;
    DestSubKeys := TStringList.Create;
    try
      if DReg.OpenKeyReadOnly('полный путь ключа') then
      begin
        DReg.GetKeyNames(DestSubKeys);
        if DestSubKeys.Count = 0 then
          ShowMessage('Список подключей пуст')
          else
            for i := 0 to DestSubKeys.Count - 1 do
              Memo1.Lines.Add(DestSubKeys[i]);
      end
      else
        ShowMessage('Не удалось открыть ключ');
    finally
      DestSubKeys.Free;
    end;
  finally
    DReg.Free;
  end;

end;
Ответить с цитированием
  #6  
Старый 16.02.2010, 00:58
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

T-dayne, если так и не смогли разобраться, можете стукнуть в аську 815979 или 418048483, помогу, чем смогу
Ответить с цитированием
  #7  
Старый 16.02.2010, 14:49
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

s0Creator Отлично, заработало. спасибо
Ultras Вам большое спасибо за готовность помочь.
Ответить с цитированием
  #8  
Старый 16.02.2010, 23:10
Аватар для T-dayne
T-dayne T-dayne вне форума
Начинающий
 
Регистрация: 26.01.2010
Сообщения: 180
Репутация: 31
По умолчанию

парни, снова выручайте.
PHP код:
function TForm1.hardwarestring;
var
  
DestSubKeysTStringList;
  
tmp:string;
begin
  DReg 
:= TReginifile.Create();
  try
    
DReg.RootKey := HKEY_LOCAL_MACHINE;
    
DestSubKeys := TStringList.Create;
    try
      
DReg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Enum\PCI\');
        DReg.GetKeyNames(DestSubKeys);
        DReg.OpenKeyReadOnly('
SYSTEM\CurrentControlSet\Enum\PCI\'+destsubkeys[0]);
        tmp:='
SYSTEM\CurrentControlSet\Enum\PCI\'+destsubkeys[0];
        DestSubKeys.Free;
        DReg.GetKeyNames(DestSubKeys);
        DReg.OpenKeyReadOnly(tmp+destsubkeys[0]);
        result:=DReg.ReadString('','
devicedesc', 'None');
      finally
      DestSubKeys.Free;
    end;
  finally
    DReg.Free;
  end; 
где ошибка? функция должна вернуть имя девайса, при ее запуске фатальная ошибка...
Ответить с цитированием
  #9  
Старый 16.02.2010, 23:15
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

У Тебя 2 раза DestSubKeys.Free;
В место первого надо DestSubKeys.Clear;
Ответить с цитированием
  #10  
Старый 16.02.2010, 23:19
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

И этого я совсем не понял
'SYSTEMCurrentControlSetEnumPCI'+destsubkeys[0]

А где '\' ?

Кстати подключ, вроде можно открывать просто
DReg.OpenKeyReadOnly(destsubkeys[0]);

Последний раз редактировалось s0Creator, 16.02.2010 в 23:21.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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