Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Считывать данные с реестра [D7, WinXP]


Megatron ©   (2008-04-13 13:57:00) 

Здравствуйте.
Есть такая проблемка. Прога должна считывать данные с файлов, а путь к этим файлам надо устанавливать вручную при первом запуске программы.Этот путь сохраняется в реестр. В принципе ничего сложного все работает... почти :blink: ..так вот как сделать так что есла прога запускается первый раз, или когда данных, о местонахождении файлов, в реестре нет, то выскакивало окошко с запросом о выборе директории с файлами.
Я делал так:

procedure TForm1.FormCreate(Sender: TObject);
var
RegIniFile: TRegIniFile;
begin
 RegIniFile := TRegIniFile.Create('My program');
 if not RegIniFile.ValueExists('Configuration') then begin //проверяю есть ли значение в параметре
   Form2.ShowModall;                                        // если нет то вызываю форму для выбора директории
 end else begin
  .............
  .............
 end;
end;

Но на эту проверку not RegIniFile.ValueExists('Configuration') прога вообще не обращает внимание, а сразу выполняет то что идет за else
Тоже самое с KeyExists('My program'), что я неправильно делаю. Приведите пожалуйста пример как правильно это все организовать, а то вообще запутался.
Заранее спасибо.


Anatoly Podgoretsky   (2008-04-14 10:03:00) [1]

> Loginov Dmitry  (14.04.2008 07:39:07)  [7]

Зря советовал прочитать справку, ох зря.


Loginov Dmitry   (2008-04-14 07:39:00) [2]

> Я предлагаю вывесьти по E.Message, рекомендую взглянуть
> в справке на обработку исключений.


Какие еще E.Message? Рекомендую ВНИМАТЕЛЬНО взглянуть на [2]! Если останутся еще какие-либо вопросы, то ПРОШУ не заставлять людей мучаться над вопросом "Что же он имеет ввиду?", а предложить свой вариант решения!


Anatoly Podgoretsky   (2008-04-14 00:03:00) [3]

> Loginov Dmitry  (13.04.2008 23:31:05)  [5]

Я предлагаю вывесьти по E.Message, рекомендую взглянуть в справке на обработку исключений.


Loginov Dmitry   (2008-04-13 23:31:00) [4]

> заканчивая спрятыванием реальных ошибока, прямо по Вредным
> Заветам.


Да неужели! Ну и как вы предлагаете вывести реальную ошибку по результатам OpenKey()? Или же предлагаете всем отказаться от использования класса TRegistry? Да ради бога, только вы - первый!

По глобальным переменным - к автору!


Anatoly Podgoretsky   (2008-04-13 22:27:00) [5]

> Loginov Dmitry  (13.04.2008 21:28:02)  [2]

Правильности здесь немного, начиная с использования глобальных переменных, заканчивая спрятыванием реальных ошибока, прямо по Вредным Заветам.


Leonid Troyanovsky   (2008-04-13 21:32:00) [6]


> Loginov Dmitry ©   (13.04.08 21:28) [2]

> По правильному где-то так:

"По правильному" Form2 нет никак.

--
Regards, LVT,


Loginov Dmitry   (2008-04-13 21:28:00) [7]

> Приведите пожалуйста пример как правильно это все организовать,
> а то вообще запутался.


По правильному где-то так:

uses Registry;

procedure TForm1.FormCreate(Sender: TObject);
begin
 with TRegistry.Create do
 try
   RootKey := HKEY_CURRENT_USER;
   if not KeyExists('My Program') then
   begin
     if OpenKey('My Program', True) then
     begin
       if Form2.ShowModal = mrOk then
         WriteString('DataPath', Form2.Edit1.Text);
     end else
       raise Exception.Create('Ошибка при обращению к реестру! Возможно, недостаточно прав!');
   end;
 finally
   Free;
 end;
end;


Anatoly Podgoretsky   (2008-04-13 14:41:00) [8]

> Megatron  (13.04.2008 13:57:00)  [0]

Например это TRegIniFile


Наверх

Титульная страница Поиск, карта сайта Написать письмо