Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> реестр 
:(
    Опции темы
Ksen
Дата 7.6.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Здравствуйте!
Помогите, пожалуйста....пытаюсь считать из реестра значение параметра и не получается,  если сказать
Код

RegIni:=TRegIniFile.Create('Software');
RegIni.OpenKey('Software\My Company\My Program', true);
str:=RegIni.ReadString('Settings','Reg','N'), считывается N, а не значение, кот. стоит в параметре...?!


Код

а если написать
RegIni:=TRegIniFile.Create('Software');
RegIni.OpenKey('Software\My Company\My Program\Settings', true);
str:=RegIni.ReadString('Reg');

то ругается "Not enough actual parameters"

а если написать
Код

RegIni:=TRegIniFile.Create('Software');
RegIni.OpenKey('Software\My Company\My Program\Settings', true);
str:=RegIni.ReadString('Reg','N');

опять ругается "Not enough actual parameters"

что-то я уже ничего не понимаю....Как правильно?  
PM MAIL ICQ   Вверх
Yanis
Дата 7.6.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Ошибка ещё раньше, т.е. нет прав скорее всего.

Добавлено @ 13:21 
Ksen
К стати, а где Registry.RootKey := ...; ? 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Ksen
Дата 7.6.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Т.е. как это нет прав!?
Ручками я в реестре могу понять все что угодно....а если программно, то фиг...

 я пытаюсь в dpr файле указать какой форме грузится.....(может в этом проблема?).....
Вообще смысл такой если в реестре стоит N, то грузить одну форму, если Y, то другую... 

Код

program Project1;

uses
  Forms,
  Registry,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Reg};

  {$R *.res}
var
str:string;
RegIni:TRegIniFile;

begin
RegIni:=TRegIniFile.Create('Software');
RegIni.OpenKey('Software\My Company\My Program\Settings', true);
str:=RegIni.ReadString('Reg','N');
if str='N' then Application.CreateForm(TReg, Reg);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
RegIni.Free;
end.
 
PM MAIL ICQ   Вверх
Rennigth
Дата 7.6.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Цитата(Yanis @  7.6.2006,  13:16 Найти цитируемый пост)
Ksen
К стати, а где Registry.RootKey := ...; ?  

Ksen, 
забыли:
Код

RegIni:=TRegIniFile.Create('Software');
RegIni.RootKey := HKEY_CURRENT_USER;
//RegIni.RootKey := HKEY_LOCAL_MACHINE;
RegIni.OpenKey('Software\My Company\My Program\Settings', true);


 


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Ksen
Дата 7.6.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



))))Млин....
Цитата
 RegIni.RootKey := HKEY_CURRENT_USER; 
....раньше ставила не работало....
теперь заработало....

Не столь важно, но вообще-то в одной умной книжке вычитала, что если не выбирать корень реестра, то HKEY_CURRENT_USER будет по умолчанию....

Спасибо за помощь!)) 
PM MAIL ICQ   Вверх
Ksen
Дата 7.6.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Что за палки-елки((((...рано радуюсь...

теперь на строчку RegIni.RootKey := HKEY_CURRENT_USER; 
ругается "Undeclared Identifier HKEY_CURRENT_USER;"....из-за чего??...ничего же не меняла... 
PM MAIL ICQ   Вверх
vv3
Дата 7.6.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 29.4.2006

Репутация: нет
Всего: нет



Нафиг всякие RootKey!
в конструкции: 
RegIni:=TRegIniFile.Create('Software');
RegIni.OpenKey('Software\My Company\My Program\Settings', true);
str:=RegIni.ReadString('Reg');

RegIni.OpenKey - совершенно лишнее! Не путай TRegistry и TRegIniFile.

Я так понял, что нужно прочитать из ветки значение и прописать там значение. По умолчанию TRegIniFile обращается как раз туда, куда нам нужно: в ветку реестра HKEY_CURRENT_USER, так что:

Код

function ReadRegAndCreateForm: Boolean;
var Reg: TRegIniFile;
begin
 Reg:= TRegIniFile.Create('Software');
 Result:= Reg.ReadBool('My Company\My Program\Settings', 'LoadForm1', true);
 Reg.Free;
end;


В конструкции ReadBool<String, Integer, etc> первый параметр - имя ветки (начиная от объявленной в TRegIniFile.Create), из которой читать, второй - имя параметра реестра, третий - значение этого параметра по умолчанию, т.е. если его вообще в реестре не будет.

Код

procedure ReadRegAndCreateForm(BoolParam: boolean);
var Reg: TRegIniFile;
begin
 Reg:= TRegIniFile.Create('Software\My Company\My Program\Settings');
 Reg.WriteBool('', 'LoadForm1', BoolParam);
 Reg.Free;
end;

 

Это сообщение отредактировал(а) vv3 - 7.6.2006, 14:26
PM MAIL   Вверх
Ksen
Дата 7.6.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



vv3, если я тебя правильно поняла, то в моем вариенте это должно быть вот так
Reg:= TRegIniFile.Create('Software');
str:=Reg.ReadBool('My Company\My Program\Settings', 'Reg', false);
Reg.Free;

 smile  если да...то у меня опять  считывается false, которое я задала по умолч., а не значение, кот. стоит в параметре...?!
Почему???!!! smile  smile  smile  smile 
 
PM MAIL ICQ   Вверх
vv3
Дата 7.6.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 29.4.2006

Репутация: нет
Всего: нет



Цитата(Ksen @  7.6.2006,  15:24 Найти цитируемый пост)
если да...то у меня опять  считывается false, которое я задала по умолч., а не значение, кот. стоит в параметре...?!

Проверь написание веток реестра!
И есть у меня опасение, что параметр реестра ('Reg') у тебя REG_SZ...  smile , в который ты так и  пишешь true

Итак, есть ветка реестра в HKEY_CURRENT_USER  Software\My Program\Settings и в ней есть параметр Reg типа boolean (!), равный true
Тогда:
Код

function ReadFromRegistry: Boolean;
var Reg: TRegIniFile;
begin
 Reg:= TRegIniFile.Create('Software\MyProgram\Settings');
 Result:= Reg.ReadBool('', 'Reg', true);
 Reg.Free;
end;

если параметр в реестре типа REG_SZ (то есть, ты пишешь туда слово true), то:
Код

function ReadFromRegistry: Boolean;
var Reg: TRegIniFile;
begin
 Reg:= TRegIniFile.Create('Software\MyProgram\Settings');
 Result:= StrToBool(Reg.ReadString('', 'Reg', 'true');
 Reg.Free;
end;

и все... 
PM MAIL   Вверх
Ksen
Дата 8.6.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Всем спасибо разобралась!!!! Сделала немного по другому....через TRegistry!!!!!!!
 smile 

если кому будет полезно, то вот....
Код

  Reg:= TRegistry.Create;
  Reg.RootKey := hkey_current_user;
  Reg.OpenKey('software\MyRegistryExample',true);
  str:=Reg.ReadString('MyRegistryName');
  Reg.CloseKey;
  Reg.Free;
 
PM MAIL ICQ   Вверх
vv3
Дата 9.6.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 29.4.2006

Репутация: нет
Всего: нет



Цитата(Ksen @  8.6.2006,  14:58 Найти цитируемый пост)
Сделала немного по другому....через TRegistry!!!!!!!

Ну и зря совершенно... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.