Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.49 MB
Время: 0.004 c
2-1260715780
Axtazi
2009-12-13 17:49
2010.02.07
Помогите решить вот такую задачу...


3-1233828628
ganda
2009-02-05 13:10
2010.02.07
Поднять мусор из базы данных FireBird 1/5


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


1-1211540801
ply
2008-05-23 15:06
2010.02.07
сменить цвет шрифта ячейки... DevExpress


15-1259875013
AlexDan
2009-12-04 00:16
2010.02.07
Стиль W7 и стандартные компоненты..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский