Текущий архив: 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.46 MB
Время: 0.007 c