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

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

Проблема с реестром. [D7, WinXP]


Ангела ©   (2006-09-29 16:17:00) 

Необходимо прочитать значение из реестра.
Необходимый параметр File0

Software
 Proramms
    Programm1
       Setting
          File0

Все работает нормально, пока в ключе "Programm1" нет тире.
Если написать "Pro-gramm1" (а так оно и есть в реестре), то прочитать не удается
вот код

procedure TForm1.Button1Click(Sender: TObject);
var
FIniFile:TRegIniFile;
b:bool;
begin
 Label3.Caption:= 'Error';

 FIniFile:= TRegIniFile.Create('Software');
 b:=FIniFile.OpenKey('Proramms\Pro-gramm1',false);

 if b then Label3.Caption:= 'Прочитано';


 Label1.Caption:= FINIFile.ReadString('Setting','File0','00000');
end;

То есть не получается получить данные, если в ключе есть тире. Как это обойти?


Ангела   (2006-09-29 16:55:00) [1]

поняла ошибку.
по умолчанию открывается раздел Current_user
А у меня все лежит в Local_machine

Спасибо!


Elen   (2006-09-29 16:44:00) [2]


> stone

И существует ли в CURRENT_USER?


stone   (2006-09-29 16:41:00) [3]


> b:=FIniFile.OpenKey('Proramms\Pro-gramm1',false);

Ключ будет открыт, если существует. А он у тебя точно существует?


Ангела   (2006-09-29 16:40:00) [4]

чертовщина какая-то. а у меня не читает
создала и Test и Op-tions

procedure TForm1.Button1Click(Sender: TObject);
var
F: TRegIniFile;
begin
F := TRegIniFile.Create('SOFTWARE');
try
  if F.OpenKey('Test\Op-tions', false) then
    ShowMessage(F.ReadString('Options', 'Test', ''));
finally
  F.Free;
end;
end;

месседжа не показывает...


Dmitrij_K   (2006-09-29 16:40:00) [5]

В ошибке что пишет?
ShowMessage(SysErrorMessage(GetLastError()));


Игорь Шевченко   (2006-09-29 16:31:00) [6]


> То есть не получается получить данные, если в ключе есть
> тире. Как это обойти?


Странно. Получается.

HKEY_CURRENT_USER\Software\Test\Op-tions\Options

строковый параметр Test со значением notest

procedure TForm1.Button1Click(Sender: TObject);
var
 F: TRegIniFile;
begin
 F := TRegIniFile.Create('SOFTWARE');
 try
   if F.OpenKey('Test\Op-tions', false) then
     ShowMessage(F.ReadString('Options', 'Test', ''));
 finally
   F.Free;
 end;
end;


Elen   (2006-09-29 16:28:00) [7]


> Ангела

У меня все читается :-| хоть с тире хоть без (соответствуя в регистре). Почему такие выводы? строка в реестре случайно #0 не содержит?


Наверх

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