Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Достаем из папки в реестре имена всего что там,во!


Автор: JoKeR13 21.6.2007, 13:46
И снова драсти!!!

И снова я обращаюсь к вам за помощью, значит так:
Мне оч оч нужно в программе из определенного каталога в !реестре! достать имена всех имеющихся там ДВОИЧНЫХ ПАРАМЕТРОВ!!! да да именнно имена а не значения-зная имена. Дело в том что одна программа в реестре под именами двоичных параметров хранит путь к оч нужному файлу путь может меняться вот мне и нужно его вытащить при этом там может быть путь к нескольким файлам вооот.. 
Извените я сам не понял что я написал но вы люди опытные уверен разберетесь. Заранее благодарен, жду ответа, спасибо!!!

Автор: _hunter 21.6.2007, 14:08
так в чем проблема? береш RegEnumValue и перебираеш все значения. если lpType == REG_BINARY -- это твое значение. делай с ним что хош (запоминай имя)...

Автор: Snowy 21.6.2007, 14:35
TRegistry.GetKeyNames
TRegistry.GetValueNames
Вернут тебе список. Останется только отфильтровать двоичные через TRegistry.GetDataType

Автор: JoKeR13 21.6.2007, 16:15
Большое спасибо вам за ответ!!!

Но если вы посмотрите на мой "ранг" то увидите надпись новичок :( извените но не могли бы вы описать не много поподробнее как вытенуть и вывести например в мемо я тут покапался получилось следующее:

var
  Form1: TForm1; Registry: TRegistry;  s:tstrings; i:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Registry: TRegistry;
begin
  Registry := TRegistry.Create;
  Registry.RootKey := hkey_local_machine;
  Registry.OpenKey('ïóòü ê ïàïêå áåç hkey...',true);
  Registry.GetValueNames(s);
  Registry.CloseKey;
  Registry.Free;
  for i:=1 to s.Count-1 do
  memo1.Lines.add(s.Strings[i]);
end;


Компиляция проходит а после нажатия на кнопку Button1Click выскакивает ошибка "project ... raised excaption class EAccessViolaton дальчто что то про адрес в памяти бла бла нажмите чтобы продолжить" 
У кажите пожалуйста где ошибка или что я не так делаю! Заранее благоарен!!!

Добавлено через 10 минут и 5 секунд
Под кучей каракулей подразумеваеться полный адрес кроме раздела HKEY... а ошибку выдает на Registry.GetValueNames(s). Все еще жду!!!

Автор: Snowy 21.6.2007, 16:36
1. Используй TStringList, а не TStrings.
2. Ты забыл его создать. Вот и ошибка - попытка доступа к несозданному объекту.
3. Компилится, но не факт, что не ругается - читай сообщения компилятора.
4. Не надо использовать глобальные переменные. Юзай локальные.

Автор: MetalFan 21.6.2007, 16:39
Цитата(JoKeR13 @  21.6.2007,  17:15 Найти цитируемый пост)
  Registry.GetValueNames(s);
  Registry.CloseKey;
  Registry.Free;
  for i:=1 to s.Count-1 do
  memo1.Lines.add(s.Strings[i]);

можешь написать просто:
Код

 Registry.GetValueNames(memo1.Lines);


а ошибку выдает потому, что s не создан

Автор: JoKeR13 21.6.2007, 17:12
Огромное всем спасибо за помошь еслиб мог понаставил бы вам репутации но не могу сори, наконец все заработало если камуто понадобиться то полностью это выглядит так:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Registry: TRegistry; List:TStringList;   s:tstrings; i:integer;
begin
  list:=TStringList.Create;
  Registry := TRegistry.Create;
  Registry.RootKey := HKEY_CURRENT_USER;
  Registry.OpenKey('Software\Microsoft\Office\12.0\Outlook\Catalog',true);
  Registry.GetValueNames(list);
  Registry.CloseKey;
  Registry.Free;
  for i:=0 to list.count-1 do
  memo1.Lines.add(list.Strings[i]);
end;


внимание когда выводите в мемо начинайте не с 1 а с 0 а то не будет первой строки!!! 
ВСЕМ СПАСИБО!!!!!

Добавлено через 4 минуты и 26 секунд
Software\Microsoft\Office\12.0\Outlook\Catalog 
ууупс гыы пропал все таки :-(( Ещер заз спасибо добабаченья.

Автор: Snowy 21.6.2007, 18:15
Ты забыл list уничтожить.
На работу программы это конечно не скажется, но память утекает...

Автор: MetalFan 22.6.2007, 14:20
а зачем этот лист вообще нужен то?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)