C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
чтение и прсваивание из реестра
Evil_Smile
Отправлено: 20.07.2006, 14:47


Дежурный стрелочник

Группа: Участник
Сообщений: 57



подскажите где ошибка и как от неё избавиться

CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRegistry *ReadReg = new TRegistry(KEY_ALL_ACCESS);
int p;
AnsiString RegString, RegName, RegWrite;
AnsiString BgColor;//цвет фона
AnsiString fName, fSize, fColor;
for (p = 0; p <= 3; p++)
       {
       if (ReadReg)
               {
               ReadReg->RootKey = HKEY_CURRENT_USER;
               ReadReg->OpenKey(RegString, false);
               RegWrite = ReadReg->ReadString(RegName);
               ReadReg->CloseKey();
               }
       switch(p)
               {
               case 0:
               RegString = "Software\\Evil Smiles Soft\\My notepad\\Background\\";
               RegName = "BackgroundColor";
               RegWrite = BgColor;
               break;
               case 1:
               RegString = "Software\\Evil Smiles Soft\\My notepad\\Font";
               RegName = "FontName";
               RegWrite = fName;
               break;
               case 2:
               RegString = "Software\\Evil Smiles Soft\\My notepad\\Font";
               RegName = "FontSize";
               RegWrite = RegWrite;
               break;
               case 3:
               RegString = "Software\\Evil Smiles Soft\\My notepad\\Font";
               RegName = "FontColor";
               RegWrite = fColor;
               break;
               }
       }
Memo1->Color = StringToColor(RegWrite);
Memo1->Font->Name = RegWrite;
Memo1->Font->Size = StrToInt(RegWrite);
Memo1->Font->Color = StringToColor(RegWrite);
}


подскажите pls
Shagg
Отправлено: 20.07.2006, 15:10


Дежурный стрелочник

Группа: Участник
Сообщений: 69



В первой итерации цикла RegString пустая ohmy.gif , а дальше разбирай сам
Хоть бы написал какая ошибка...
Guest
Отправлено: 20.07.2006, 15:15


Не зарегистрирован







Это, типа, шутка? biggrin.gif biggrin.gif biggrin.gif
Shagg
Отправлено: 20.07.2006, 15:41


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Это указка на ошибку...
а вообще в итоге RegWrite равно fColor, в который никакое значение не записывается, т.е. он равен "", и преобразование в int выдает ошибку.
Тут есть два выхода:
1) инициализация какими то значениями по-умолчанию
2) IntToStr(!(fColor.IsEmpty())) — криво, но точно вернет хотя бы 0
Guest
Отправлено: 20.07.2006, 15:54


Не зарегистрирован







2Shagg
Пост относился к вопросу (просто долго "уходил") biggrin.gif
Shagg
Отправлено: 20.07.2006, 16:30


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Sorry не разобрал
Evil_Smile
Отправлено: 20.07.2006, 16:35


Дежурный стрелочник

Группа: Участник
Сообщений: 57



если поставить
CODE

if (ReadReg)
              {
              ReadReg->RootKey = HKEY_CURRENT_USER;
              ReadReg->OpenKey(RegString, false);
              RegWrite = ReadReg->ReadString(RegName);
              ReadReg->CloseKey();
              }

после switch() то цвет фона BgColor присваивается и для fColor а ето мне не надо
исчо он пытается присвоить BgColor для размера шрифта как от этего избавиться biggrin.gif

Вернуться в Вопросы программирования в C++Builder