Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
2-1208170329
umbra
2008-04-14 14:52
2008.05.11
не выполняется код в конструкторе


11-1188820984
Max727
2007-09-03 16:03
2008.05.11
KOLmdvXLGrid


2-1208152850
lewka-serdceed
2008-04-14 10:00
2008.05.11
ComboBox в ячейке StringGrid


2-1208157323
arinyshka
2008-04-14 11:15
2008.05.11
Определить источник события


15-1206471007
Informer
2008-03-25 21:50
2008.05.11
А в чем смысл?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский