Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: CL | DM;

Вниз

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

 
нов   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
3-70185
Filat
2003-05-02 16:35
2003.05.22
FireBird - SYSDBA. А можно для клиента без последнего?


3-70093
Michel
2003-05-04 15:23
2003.05.22
Как преобразовать БД одной системы в другую


3-70176
RDA
2003-05-02 12:51
2003.05.22
Проблема с кодировкой


1-70345
Tatiana
2003-05-09 09:52
2003.05.22
DecimalSeparator


3-70160
Toshanius
2003-05-02 10:39
2003.05.22
Index is out of date!