Текущий архив: 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.46 MB
Время: 0.006 c