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

Вниз

Как читать из реестра?   Найти похожие ветки 

 
нов   (2003-05-08 09:41) [0]

Мастера, помогите.
Такой вот код:

Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if not Reg.OpenKey("Software\My",true) then
begin
Reg.WriteBool("TaskExit",true);
TaskExit := true;
Reg.CloseKey;
end
else
begin
TaskExit := Reg.ReadBool("TaskExit");
end;
finally
Reg.Free;
end;

я хочу при отсутствии ключа My записать туда значение по умолчанию. Но почему-то прога все равно пытается упрямо прочитать... Где у меня ошибка?


 
evvcom   (2003-05-08 09:45) [1]

Reg.OpenKey("Software\My",true) при отсутствии ключа создает его и возвращает True.


 
WarLord   (2003-05-08 09:52) [2]

Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
if not Reg.OpenKey("Software\My",true) then
begin
ShowMessage("Недостаточно прав на запись ключа в реестр!");
exit;
end
else ....
finally
Reg.Free;
end;


 
нов   (2003-05-08 09:59) [3]


> evvcom © (08.05.03 09:45)
> Reg.OpenKey("Software\My",true) при отсутствии ключа создает
> его и возвращает True.

то есть у мне надо убрать not в условии?
убираю, и прога упорно лезит писать в реестр значение, даже если есть такой ключ...


 
нов   (2003-05-08 10:10) [4]

Получилось!!! Сделал так...
if not Reg.OpenKey("Software\ETool",false) then
begin
Reg.OpenKey("Software\ETool",true);


 
Lord Warlock   (2003-05-08 10:13) [5]


> нов


Обычно порядок работы такой:
1.В какой-то момент (обычно при начале работы программы) пытаемся считать значение ключа в переменную А, если его нет, то в эту переменную попадает "ошибочное" значение, которое ты указываешь.
2. Опять в какой-то момент (обычно при завершении работы программы или при записи настроек) записываем значение переменной А в реестр.

При работе программы используется значение в переменной А.
Вообще, желательно минимизировать частоту обращения программы к реестру.


 
WarLord   (2003-05-08 10:16) [6]


> Lord Warlock © (08.05.03 10:13)

желательно минимизировать суету программы ВООБЩЕ ;)


 
Bel   (2003-05-08 10:24) [7]

> нов (08.05.03 09:59)
> то есть у мне надо убрать not в условии?

Нет.
Можно делать так:
Reg.OpenKey("Software\My",true); //открываем ключ, если его не существует, то создаём
if ValueExist("TaskExit") then //если значение существует
TaskExit := Reg.ReadBool("TaskExit") //то берём его
else begin //иначе
Reg.WriteBool("TaskExit",true); //создаём его и записываем туда значение по умолчанию
TaskExit := true; //не забываем про эту переменную
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-70383
Vasiliy
2003-05-10 21:06
2003.05.22
Как избавиться от мерцания окна при перерисовке


1-70244
Le!
2003-05-09 07:40
2003.05.22
Присвоение времени.


1-70226
Top Gun
2003-05-11 16:14
2003.05.22
Определение номера контрола


1-70301
StarCon
2003-05-13 09:02
2003.05.22
Lotus Notes


1-70363
FZ*XupypG
2003-05-10 04:08
2003.05.22
Сохранение типа TColor в текстовый файл и чтение его оттуда





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