Форум: "Начинающим";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];
ВнизЧтение ключа реестра до инициализации форм Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.004 c