СообЧа > База Знаний > Программирование > Delphi

Вопрос

Можно ли как-нибудь узнать сколько продразделов находится в определенном разделе реестра?

Ответ

Процедура procedure GetKeyNames(Strings: TStrings);

выдает список (тип TStrings) всех подключей (subkeys) текущего ключа (key).

Процедура procedure GetValueNames(Strings: TStrings);

выдает список (тип TStrings) имен (names) всех значений ассоциированных с текущим ключом (key).

Функция function HasSubKeys: Boolean;

возвращает True если ключ имеет хотя бы один подключ.

Т.е. проверяешь, имеет ли ключ подключи и вытаскиваешь их GetValueNames(Strings: TStrings), а иначе вытаскиваешь значения GetValueNames(Strings: TStrings).

А дальше — свойство Tstrings.count.

Небольшой пример. На форме ListBox1, Edit1, Label1, Label2, Button1

Добавить в uses registry

procedure TForm1.Button1Click(Sender: TObject); var Reg: TRegistry; Val:TStringList; begin Reg:=TRegistry.Create; try Val:=TStringList.Create; try Reg.RootKey:=HKey_Local_Machine; if not Reg.OpenKey(Edit1.Text,False) then ShowMessage('Не могу открыть ключ!') else begin Reg.GetKeyNames(Val); Listbox1.Items:=Val; label2.Caption:=inttostr(val.Count); end; finally Val.Free; end; finally Reg.Free; end; end; procedure TForm1.ListBox1DblClick(Sender: TObject); begin edit1.Text:=listbox1.Items.Strings[listbox1.itemindex] end;

Из конференции Expert_FAQ



Copyright © 2000-2004 Сообщество Чайников
Контактная информация