![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Считывать данные с реестра [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