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

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

Чтение ключа реестра до инициализации форм [D7, XP]


Страницы:   1 2

TAzimut ©   (2009-12-10 16:13:00) 

Нужно прочитать значение ключа реестра(настр.проги) до инициализации и запуска самой программы. Пробовал сделать это так:
В исходнике Project1 написал след. код -
uses Registry;
var
Registr:TRegistry;
begin
 Registr := TRegistry.Create;
 Registr.RootKey := hkey_local_machine;
 Registry.OpenKey(WinVers,true);
 s:=Registry.ReadString('MyKey');
 Registry.CloseKey;
 Registry.Free;
Application.Initialize;
и т.д. ...
При компиляции вылетает ошибка: неизв.идент. hkey_local_machine
Непонятно че с ней делать :(


clickmaker   (2009-12-11 13:56:00) [1]

> По умолчанию будет HKEY_CURRENT_USER

это потому что он в объекте TRegistry по умолчанию ставится, а потом передается в функцию winapi для открытия


kyn66   (2009-12-11 13:52:00) [2]


> clickmaker ©   (11.12.09 13:37) [20]
> там все равно корень по-любому задавать надо

Я где то читал, что якобы RootKey можно и не указывать. По умолчанию будет HKEY_CURRENT_USER


clickmaker   (2009-12-11 13:37:00) [3]

> Это критично, это относительные пути vs абсолютные.

для реестра?
там все равно корень по-любому задавать надо


Anatoly Podgoretsky   (2009-12-11 13:33:00) [4]

> kyn66  (11.12.2009 13:12:16)  [16]

Это критично, это относительные пути vs абсолютные.


kyn66   (2009-12-11 13:32:00) [5]


> clickmaker ©   (11.12.09 13:15) [17]

Я указывал не на косяк, а как писал "промеждупрочим", хотя сейчас в другом коде у себя глянул - слэша нет. А косяк я вижу в чем.


clickmaker   (2009-12-11 13:15:00) [6]

> насколько это критично

абсолютно не критично.
тем более, что косяк был не в этом


kyn66   (2009-12-11 13:12:00) [7]


> TAzimut   (11.12.09 12:35) [15]

Пардон, [1] проглядел, но и там слэш нужно первый поставить.
было
WinVers = 'Software\MySoft';
стало
WinVers = '\Software\MySoft';

Не буду спорить насколько это критично, но я всегда ставлю. Т.ч. это так, промеждупрочим ;)


TAzimut   (2009-12-11 12:35:00) [8]

>kyn66. const
WinVers = 'Software\MySoft';


kyn66   (2009-12-11 12:03:00) [9]

А еще совет. Чтобы не засорять файл проекта, сделать дополнительный модуль(Const.pas к примеру), в котором можно хранить собственные функции, процедуры, константы и там же проверять реестр, инициализируя переменные параметров программы.


kyn66   (2009-12-11 11:57:00) [10]

Странно что работает, но мне кажется в этом месте Registry.OpenKey(WinVers,true);долен быть глюк. WinVers- это переменная? Если да, то где она инициализируется? Если ключ - то должен быть строковый параметр.

  function OpenKey(const Key: String; CanCreate: Boolean): Boolean;


TAzimut   (2009-12-11 11:27:00) [11]

>Медвежонок Пятачок. Спасибо,помогло! (четыре буквы "y") :)


Anatoly Podgoretsky   (2009-12-10 19:43:00) [12]

О да там куча ошибок, придется еще к uses обращаться.


Медвежонок Пятачок   (2009-12-10 17:52:00) [13]

снимись с тормоза, и сотри четыре буквы "y"


TAzimut   (2009-12-10 17:39:00) [14]

>Сергей М. Странно.. В другой форме где Registry юзается этот же код отлично читает значения ключей реестра. Почему тогда тут он на OpenKey матерится? :/ Как отредактировать код чтоб работал?


Германн   (2009-12-10 17:26:00) [15]


> Ему ыше надо чтобы в юните Registry была регулярная процедура
> с именем OpenKey()..

Имхо, не поймет автор такой премудрости :)


Сергей М.   (2009-12-10 17:13:00) [16]


> Че ему ыше надо?


Ему ыше надо чтобы в юните Registry была регулярная процедура с именем OpenKey().. А ее там не было и нет.. А ты требуешь чтобы была ..


Медвежонок Пятачок   (2009-12-10 17:10:00) [17]

причем сразу четыре буквы


Медвежонок Пятачок   (2009-12-10 17:10:00) [18]

убери букву "y"


TAzimut   (2009-12-10 17:05:00) [19]

>Сергей М. Я всегда думал Registry должно быть.. :) Добавил windows другая появилась лажа: неизв. идент. OpenKey :( Че ему ыше надо? :/


Сергей М.   (2009-12-10 16:25:00) [20]


> неизв.идент. hkey_local_machine


Реестр - это премудрости Windows.
Значит в uses должен фигурировать юнит Windows.
Разве не очевидно ?


Страницы:   1 2

Наверх

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