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

Вниз

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

 
ceval   (2004-09-29 12:27) [0]

Помогите разобраться
в первый раз работаю с 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 А как сохранить не только имя шрифта но и размер ?


 
KSergey ©   (2004-09-29 15:56) [1]

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

> 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);


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

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

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

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

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

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

А Font.Size - не оно?


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

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

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

..........
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:44) [4]

> [3] ceval   (29.09.04 16:33)

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


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

Большое спасибо за помощь 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)
          .....;

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


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

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

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

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


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

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


 
Lord de Mon ©   (2004-09-29 18:33) [8]


> ceval   (29.09.04 17:54) [6]


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


 
icebeerg ©   (2004-09-29 18:36) [9]

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


 
Lord de Mon ©   (2004-09-29 18:36) [10]

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

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

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


 
icebeerg ©   (2004-09-29 18:39) [11]

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


 
Lord de Mon ©   (2004-09-29 18:40) [12]

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

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

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


 
ssk ©   (2004-09-30 09:37) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
14-1096441436
Kerk
2004-09-29 11:03
2004.10.17
Курсовой проект


1-1096378968
Lord_Prizrak
2004-09-28 17:42
2004.10.17
Плагины.


14-1096269319
peypivo
2004-09-27 11:15
2004.10.17
Похмелье


4-1095084845
Relaxxx
2004-09-13 18:14
2004.10.17
Как мне инициализировать сразу два порта(СОМ1 и СОМ2)


14-1096344369
КаПиБаРа
2004-09-28 08:06
2004.10.17
Настройка оперы