![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение ключа реестра до инициализации форм [D7, XP]
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.
Разве не очевидно ?