Главная страница
    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.007 c
1-70345
Tatiana
2003-05-09 09:52
2003.05.22
DecimalSeparator


1-70358
tytus
2003-05-09 20:31
2003.05.22
servers


14-70483
race1
2003-05-02 06:29
2003.05.22
Typematic


8-70408
sergey2
2003-02-07 15:07
2003.05.22
Как работать с картинками в формате *.png ?


1-70369
NoMaD
2003-05-10 09:34
2003.05.22
Как отследит нажатие Ctrl





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