Главная страница
    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.46 MB
Время: 0.007 c
3-1196832865
Тест_Новичок
2007-12-05 08:34
2008.05.11
Как создать таблицу в формате InterBase?


15-1206722016
Ega23
2008-03-28 19:33
2008.05.11
командная строка


15-1206194398
TUser
2008-03-22 16:59
2008.05.11
В чипсет


15-1206803292
guav
2008-03-29 18:08
2008.05.11
DMClient - посветка.


2-1207725582
Footballer
2008-04-09 11:19
2008.05.11
UDP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский