Конференция "Основная" » Считывать данные с реестра [D7, WinXP]
 
  • Megatron (13.04.08 13:57) [0]
    Здравствуйте.
    Есть такая проблемка. Прога должна считывать данные с файлов, а путь к этим файлам надо устанавливать вручную при первом запуске программы.Этот путь сохраняется в реестр. В принципе ничего сложного все работает... почти :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 © (13.04.08 14:41) [1]
    > Megatron  (13.04.2008 13:57:00)  [0]

    Например это TRegIniFile
  • Loginov Dmitry © (13.04.08 21:28) [2]
    > Приведите пожалуйста пример как правильно это все организовать,
    > а то вообще запутался.


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

    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;

  • Leonid Troyanovsky © (13.04.08 21:32) [3]

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

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

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

    --
    Regards, LVT,
  • Anatoly Podgoretsky © (13.04.08 22:27) [4]
    > Loginov Dmitry  (13.04.2008 21:28:02)  [2]

    Правильности здесь немного, начиная с использования глобальных переменных, заканчивая спрятыванием реальных ошибока, прямо по Вредным Заветам.
  • Loginov Dmitry © (13.04.08 23:31) [5]
    > заканчивая спрятыванием реальных ошибока, прямо по Вредным
    > Заветам.


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

    По глобальным переменным - к автору!
 
Конференция "Основная" » Считывать данные с реестра [D7, WinXP]
Есть новые Нет новых   [134487   +1][b:0][p:0.001]