Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Не считываются значения из реестра


Автор: Кощей 13.5.2009, 13:53
При создании формы значения должны считываться из реестра и присваивать значение чекбоксам.
 

Код

Reg := Tregistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;

Reg.OpenKey ('Software\KosheyTest\', true);
    if reg.KeyExists('SetIconInTray') then
            SetIconInTray.Checked:= reg.ReadBool('SetIconInTray');
    if reg.KeyExists('SetOffStartPanel') then
            SetOffStartPanel.Checked:= reg.ReadBool('SetOffStartPanel');
    if reg.KeyExists('SetStartInMinimized') then
            SetStartInMinimized.Checked:= reg.ReadBool('SetStartInMinimized');
Reg.CloseKey;
finally
Reg.Free;


Условие reg.KeyExists выполняются все...я проверял..а значения не присваиваются...где я туплю?

Добавлено через 1 минуту и 7 секунд
В реестре значения и true и false есть...

Автор: MetalFan 13.5.2009, 14:40
Цитата(Кощей @  13.5.2009,  13:53 Найти цитируемый пост)
В реестре значения и true и false есть... 

и как они там записаны? как строки? при чем тогда ReadBool? нажми Ctrl+Click на ReadBool и увидишь:
Код

function TRegistry.ReadBool(const Name: string): Boolean;
begin
  Result := ReadInteger(Name) <> 0;
end;

наверное проблема в этом.

Добавлено @ 14:41
попробуй так
Код

SetIconInTray.Checked:= SameText(reg.ReadString('SetIconInTray'), 'True');

Автор: Кощей 13.5.2009, 15:36
я их записывал как 

Код

Reg := Tregistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey ('Software\KosheyTest\', true);
Reg.WriteBool('SetIconInTray', SetIconInTray.Checked);
Reg.WriteBool('SetOffStartPanel', SetOffStartPanel.Checked);
Reg.WriteBool('SetStartInMinimized', SetStartInMinimized.Checked);
Reg.CloseKey;
finally
Reg.Free;


в реестр было добавлено в зависимости от true-единички...в противном случае при else нули...

пытался считывать как
Код

if reg.KeyExists('SetIconInTray') then
            begin 
                if reg.ReadInteger('SetIconInTray') = 1  then SetIconInTray.Checked:=true;
end;


пытался так же как строчку принимать....при старте чекбоксы не реагируют....

Автор: Кощей 13.5.2009, 15:51
Цитата

попробуй так
Код

SetIconInTray.Checked:= SameText(reg.ReadString('SetIconInTray'), 'True');




Спасибо, но не работает...версию опечатки я не откидываю...но вроде все проверил smile ...

Автор: MetalFan 13.5.2009, 16:02
тогда Use Debug DCU и смотри, что происходит внутри OpenKey и ReadBool

Автор: Кощей 13.5.2009, 16:28
Извиняюсь...но как этим чудом  smile  пользоваться, галочку в опциях я нашел...изменений я не вижу...или где почитать об этом?

Автор: Christoph 13.5.2009, 19:19
ну потом построчно идешь по коду F8, а если у тебя на текущей строчке используется метод и ты хочешь посмотреть что творится в методе, например посмотреть значения, нажимаешь F7 trace into, и откроется исходник с методом!
F8 для перехода к новой строчке кода, а Ф7 для того что заглянуть внутрь метода  smile 

Автор: Кощей 13.5.2009, 20:09
MetalFan, Christoph благадарствую. 

странно...

Код

if reg.KeyExists('SetIconInTray') then
            SetIconInTray.Checked:= reg.ReadBool('SetIconInTray');


Закоментил строчку "if reg.KeyExists('SetIconInTray') then"...все заработало...

при этом...
Код

if reg.KeyExists('SetIconInTray') then
           begin
            SetIconInTray.Checked:= reg.ReadBool('SetIconInTray');
            Button1.Visible:= false;
           end;


кнопка исчезала...но значения не присваивались...

 Спасибо за помощь.

Автор: MetalFan 13.5.2009, 20:31
аааа! семен-семеныч... а слона то я и не заметил! при чем тут KEYExists? ValueExists надо пользовать

Автор: THandle 13.5.2009, 20:41
Все таки прежде чем что-либо использовать, надо это изучить, ИМХО smile

Почитай хотя бы мою статейку:

http://forum.vingrad.ru/articles/topic-200341.html

там все методы описаны.
MetalFan правильно заметил в предыдущем посте...

Автор: Кощей 13.5.2009, 20:52
Да я по твоей статье и писал))) Ты везде на неё ссылаешь...отличная статья...тупанул я малек)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)