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

Вниз

Чтение ключа реестра до инициализации форм   Найти похожие ветки 

 
TAzimut   (2009-12-10 16:13) [0]

Нужно прочитать значение ключа реестра(настр.проги) до инициализации и запуска самой программы. Пробовал сделать это так:
В исходнике 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
Непонятно че с ней делать :(


 
TAzimut   (2009-12-10 16:21) [1]

Перед var еще описана константа
const
 WinVers = "Software\MySoft";


 
Медвежонок Пятачок ©   (2009-12-10 16:25) [2]

При компиляции вылетает ошибка: неизв.идент. hkey_local_machine

править uses


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


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


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


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

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


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

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


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

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


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


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


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


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


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

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


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

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


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

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


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

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


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

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


 
kyn66 ©   (2009-12-11 11:57) [13]

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

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


 
kyn66 ©   (2009-12-11 12:03) [14]

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


 
TAzimut   (2009-12-11 12:35) [15]

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


 
kyn66 ©   (2009-12-11 13:12) [16]


> TAzimut   (11.12.09 12:35) [15]

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

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


 
clickmaker ©   (2009-12-11 13:15) [17]

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

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


 
kyn66 ©   (2009-12-11 13:32) [18]


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

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


 
Anatoly Podgoretsky ©   (2009-12-11 13:33) [19]

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

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


 
clickmaker ©   (2009-12-11 13:37) [20]

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

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


 
kyn66 ©   (2009-12-11 13:52) [21]


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

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


 
clickmaker ©   (2009-12-11 13:56) [22]

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

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



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
15-1259593736
ocean
2009-11-30 18:08
2010.02.07
Сколько стоит заказ?


3-1234341518
TTLr
2009-02-11 11:38
2010.02.07
Экспорт таблицы


2-1260364091
abhtr
2009-12-09 16:08
2010.02.07
Помогите перевести str1 := =?UTF-8?B?0JrQsNC6INC/0L7QsdC...


15-1259596015
Keep
2009-11-30 18:46
2010.02.07
ОС x64 и 32 битные программы


2-1260482915
Aleks
2009-12-11 01:08
2010.02.07
динамически создаваемые объекты как их удалить?