Вопрос
Можно ли как-нибудь узнать сколько продразделов находится в определенном разделе реестра?
Ответ
Процедура 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 Сообщество Чайников
Контактная информация