VR
Virtual Reality On-line   Журнал
Новости   |     Журнал    |    Хаkер    |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]

[ Download  ]
[  Конкурс  ]
[ Анекдоты  ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Язык программирования Delphi.
Работа с реестром на низком уровне
:
Logo

Мне уже несколько раз приходили вопросы от программистов Windows NT типа: "Почему, когда я создаю ключи в реестре с помощью TRegIniFile все ключи строковые, хотя я хочу создать целое число". Некоторые думают, что это глюк Delphi, но это не глюк, а специфика TRegIniFile. Если ты хочешь, чтобы твои проги правильно работали с реестром в любой ОС, то эта статья для тебя.

Объект TRegIniFile работает с реестром на высоком уровне так, как будто он работает с ini файлом. Если ты не застал Win3.11, то напомню, ini файлы - это файлы конфигурации, которые уже устарели и используются только для совмеситмости со старым софтом. Сейчас для этих целей есть реестр. TRegIniFile - объект, который позволяет работать с реестром как с ini файлом. А так, как файл может содержать только строки, то и объект работает со строками. Так что реально, TRegIniFile все данные сохраняет и читает из реестра в виде строк. Только после чтения строки происходит преобразование в формат указанный тобой.

Реестр, в отличии от ini файлов - это база данных. Поэтому она позволяет реально хранить не только строки, но и числа, и данные, и логические операторы. Если ты хочешь, чтобы данные сохранялись и читались в виде типов отличных от строк, то ты должен работать через TRegistry. Он так же объявлен в модуле registry, поэтому ты должен подключать этот модуль в раздел uses.

Работа с TRegistry проктически такая же, как и с TRegIniFile:

var
 Reg:TRegistry;
begin
 Reg:=TRegIniFile.Create; //Инициализация
 Reg.RootKey:=HKEY_LOCAL_MACHINE;//Выбираю корень реестра
                                 //По умолчанию это HKEY_CURRENT_USER

 Reg.OpenKey('SYSTEM', true);           //Открываю раздел SYSTEM
 Reg.OpenKey('CurrentControlSet', true);//Открываю раздел CurrentControlSet
 Reg.OpenKey('Control', true);
 Reg.OpenKey('Session Manager', true);
 Reg.OpenKey('Memory Management', true);

 //Записываю параметр ClearPageFileAtShutdown
 Reg.WriteInteger('ClearPageFileAtShutdown', 112);

 //Читаю параметр Hidden
 RegIni.ReadInteger('Hidden')

 Reg.CloseKey;//Закрываю ключ
 Reg.Free;    //Освобождаю объект
end;

В этом примере чтение и запись будет происходить с числами, а не со строками с последующим преобразованием в число. Всё очень просто, даже больше, чем просто.


Design by FMk group ©
Copyright©: Horrific aka Флёнов Михаил ©