-
Здравствуйте. Есть такая проблемка. Прога должна считывать данные с файлов, а путь к этим файлам надо устанавливать вручную при первом запуске программы.Этот путь сохраняется в реестр. В принципе ничего сложного все работает... почти :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'), что я неправильно делаю. Приведите пожалуйста пример как правильно это все организовать, а то вообще запутался. Заранее спасибо.
-
> Megatron (13.04.2008 13:57:00) [0]
Например это TRegIniFile
-
> Приведите пожалуйста пример как правильно это все организовать, > а то вообще запутался.
По правильному где-то так:
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;
-
> Loginov Dmitry © (13.04.08 21:28) [2]
> По правильному где-то так:
"По правильному" Form2 нет никак.
-- Regards, LVT,
-
> Loginov Dmitry (13.04.2008 21:28:02) [2]
Правильности здесь немного, начиная с использования глобальных переменных, заканчивая спрятыванием реальных ошибока, прямо по Вредным Заветам.
-
> заканчивая спрятыванием реальных ошибока, прямо по Вредным > Заветам.
Да неужели! Ну и как вы предлагаете вывести реальную ошибку по результатам OpenKey()? Или же предлагаете всем отказаться от использования класса TRegistry? Да ради бога, только вы - первый!
По глобальным переменным - к автору!
|