Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.11;
Скачать: CL | DM;

Вниз

Считывать данные с реестра   Найти похожие ветки 

 
Megatron   (2008-04-13 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 ©   (2008-04-13 14:41) [1]

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

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


 
Loginov Dmitry ©   (2008-04-13 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 ©   (2008-04-13 21:32) [3]


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

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

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

--
Regards, LVT,


 
Anatoly Podgoretsky ©   (2008-04-13 22:27) [4]

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

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


 
Loginov Dmitry ©   (2008-04-13 23:31) [5]

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


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

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


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

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

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


 
Loginov Dmitry ©   (2008-04-14 07:39) [7]

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


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


 
Anatoly Podgoretsky ©   (2008-04-14 10:03) [8]

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

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



Страницы: 1 вся ветка

Текущий архив: 2008.05.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
2-1208241743
Миша
2008-04-15 10:42
2008.05.11
Титульный лист в программе


9-1169978725
megajober3d
2007-01-28 13:05
2008.05.11
Внимание! срочно треб. помощь на тему "Включение Акселерации"


6-1184809041
Дмитрий Белькевич
2007-07-19 05:37
2008.05.11
Сниффер траффика IdTCPServer


2-1207606761
иван8511
2008-04-08 02:19
2008.05.11
Защита программы от запуска на других компьютерах


2-1208248370
DFT
2008-04-15 12:32
2008.05.11
const