Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите разобраться в первый раз работаю с TRegistry [D7, Win95/98]


ceval ©   (2004-09-29 12:27:00) 

Помогите разобраться
в первый раз работаю с TRegistry

Хочу что бы при создании формы проверялось если ключ есть
 то читается настройки шрифта
если нет то создается ключ и записывается настройки шрифта

 var reg: Tregistry;
procedure Tmain.FormCreate(Sender: TObject);
begin
       // сoздается обьект Reg
Reg : Tregistry.Create;
Reg.RootKey:= HKEY_LOCAL_MACHINE ;
if Reg.KeyExists('\Software\PRG\Spr')
  then  begin // если есть ключ то читается настройки шрифта
if Reg.OpenKey('\Software\PRG\Spr',true)
  then
font.Name:= Reg.ReadString('Шрифт')
  else  // создания ключа
Reg.OpenKey('\Software\PRG\',true);
Reg.WriteString('Ceval','Мои приложения');
  Reg.OpenKey('\Software\PRG\Spr',true);
   Reg.WriteString('Приложения','PRegistry');
//запись в параметр Файл имени к исполняемому фаилу
   Reg.WriteString('Файл',ParamSTr(0));
//запись в параметр Шрифт имени шрифта//
   Reg.WriteString('Шрифт',fmain.Font.Name);
    end;
end;

......
 
if (fontdialog1.Execute) then
   begin
Font.Assign(fontdialod1.font);
if (Reg.OpenKey('\Software\PRG\Spr',false))
//запись имени шрифта, только если есть Spr
then reg.WriteString('Шрифт',fmain.Font.Name);
end;
 end;


Не создается ключ \Software\PRG\ ? Если в ручками создать ключ \Software\PRG\Spr то работает

P.s А как сохранить не только имя шрифта но и размер ?


ssk   (2004-09-30 09:37:00) [1]

>Lord de Mon
для начала тебе сюда http://center.fio.ru/som/es/lesson_Chaschino.htm


Lord de Mon   (2004-09-29 18:40:00) [2]

Простите,ещё раз ошыбся.

Сохранить шрифт:
reg.WriteInteger('Size', Font.Size);

Прочитать шрифт:
Font.Size := reg.ReadInteger('Size');


icebeerg   (2004-09-29 18:39:00) [3]

>Lord de Mon ©   (29.09.04 18:36) [10]
>Простите, ошыбся
Ну почему сразу ошибся, просто привел пример как можно, но не нужно делать


icebeerg   (2004-09-29 18:36:00) [4]

>Lord de Mon ©   (29.09.04 18:33) [8]
ну тогда и Reg.WriteString('Размер',IntToStr(font.Size));


Lord de Mon   (2004-09-29 18:36:00) [5]

Простите, ошыбся

Сохранить шрифт:
reg.WriteInteger('Size');

Прочитать шрифт:
reg.ReadInteger('Size');


Lord de Mon   (2004-09-29 18:33:00) [6]


> ceval   (29.09.04 17:54) [6]


font.Size:= StrToInt(Reg.ReadString('Размер')) ;


icebeerg   (2004-09-29 18:31:00) [7]

>ceval   (29.09.04 17:54) [6]
не font.Size:= Reg.ReadString('Размер') ;
а font.Size:= Reg.ReadInteger('Размер') ;
ну а когда пишеш то Reg.WriteInteger(...


ceval   (2004-09-29 17:54:00) [8]

Маленькая проблемка что с РАЗМЕРОМ не получается пробывал по  онологии подставить

  begin //  читается настройки шрифта
Reg.OpenKey('\Software\Asup\Spr',true) ;
 font.Name:= Reg.ReadString('Шрифт')
на  font.Size:= Reg.ReadString('Размер') ;

выдает ошибку 'Incompatible types: 'Integer' and 'String''


ceval   (2004-09-29 17:42:00) [9]

Большое спасибо за помощь KSergey
разобрался
.....
// сoздается обьект Reg
Reg :=Tregistry.Create;
Reg.RootKey:= HKEY_LOCAL_MACHINE ;
if Reg.KeyExists('\Software\Asup\Spr',)
  then
   begin //  читается настройки шрифта
Reg.OpenKey('\Software\Asup\Spr',true) ;
 font.Name:= Reg.ReadString('Шрифт')
  end
   else  // регистрирует
Reg.OpenKey('\Software\Asup\',true)
          .....;

Все нормально работает


KSergey   (2004-09-29 16:44:00) [10]

> [3] ceval   (29.09.04 16:33)

А я про этот код и не говорю. Я про " Хочу что бы при создании формы ... и записывается настройки шрифта"
Что соответствует верхней части кода: при создании формы записывается шрифт


ceval   (2004-09-29 16:33:00) [11]

>А вот записывать логичнее при разрушении формы (особенно если >пользователь может менять; а если не может - то и записывать-то >какой смысл? ;)

Этот код относится к другой процедуре

..........
if (fontdialog1.Execute) then
  begin
Font.Assign(fontdialod1.font);
if (Reg.OpenKey('\Software\PRG\Spr',false))
//запись имени шрифта, только если есть Spr
 then
reg.WriteString('Шрифт',fmain.Font.Name);

end;
end;


KSergey   (2004-09-29 16:00:00) [12]

В дополнение к [1] KSergey ©   (29.09.04 15:56)

Я отступы сделал как их компилятор понимает. Обрати внимание к чему else относится.

> Хочу что бы при создании формы ...
> если нет то создается ключ и записывается настройки шрифта

А вот записывать логичнее при разрушении формы (особенно если пользователь может менять; а если не может - то и записывать-то какой смысл? ;)

> P.s А как сохранить не только имя шрифта но и размер ?

А Font.Size - не оно?


KSergey   (2004-09-29 15:56:00) [13]

Так написаноже: если нет - то дальше не ходить!!
Да и причесать бы код не плохо бы... А еще отладчик есть.

> if Reg.KeyExists('\Software\PRG\Spr') then
> begin // если есть ключ то читается настройки шрифта
>   if Reg.OpenKey('\Software\PRG\Spr',true) then
>     font.Name:= Reg.ReadString('Шрифт')
>   else  // создания ключа
>     Reg.OpenKey('\Software\PRG\',true);
>   Reg.WriteString('Ceval','Мои приложения');
>   Reg.OpenKey('\Software\PRG\Spr',true);


Наверх

Титульная страница Поиск, карта сайта Написать письмо