Консультация № 141894
21.08.2008, 13:33
0.00 руб.
0 1 1
Добрый день.
У меня возникла вот такая ситуация:
Программа использует реестр для сохранения настроек (язык(Русский,Английский,Молдавский), скорость, цветовая схема).
Когда запускал программу на Windows 98 все работало нормально: мог и прочитать эти значения и при закрытии программы перезаписать значения.
Сейчас сел за Windows XP -- считывает без проблем. А при закрытии возникает такое сообщение и программа не закрывается:
Project Builder.exe raised exception class ERegistryException with message 'Failed to set data for Color'. Process stopped. Use Step or Run to continue.
Подскажите, пожалуйста, что у меня не так, и как сделать, чтобы я мог записывать эти данные в реестр.

Приложение:
Reg := TRegistry.Create(KEY_READ);
try
Reg.RootKey := HKEY_CURRENT_USER;
T:=Reg.OpenKey('SoftWare\Builder', False);
if T then begin
if color then reg.WriteInteger('Color',1) else
reg.WriteInteger('Color',0);
end;
finally
Reg.Free;
end;

Обсуждение

Неизвестный
21.08.2008, 13:41
общий
это ответ
Здравствуйте, Vassea!

Не знаю, как оно работало у Вас на Win98, но вся проблема у Вас в первой строчке:

Reg := TRegistry.Create(KEY_READ);

Вы ведь указали, что запрашиваемый уровень доступа - только чтение! И при этом пытаетесь записать значение.
Создавайте без параметров (там будет доступ KEY_ALL_ACCESS), или

Reg := TRegistry.Create(KEY_READ or KEY_WRITE);
Форма ответа