Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 125

/ вопрос решён /

Здраствуйте.
Необходимо при работе с реестром создать свой новый раздел. Как это можно это сделать через Tregistry?

Князев А.А. Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Князев А.А. (статус: Посетитель)
Вопрос отправлен: 5 октября 2006, 01:22
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: min@y™

Вот простой пример сохранения настроек в реестре: с созданием раздела, если он не существует. Выдрал из своей проги.

Приложение:
  1. procedure TSettings.Save;
  2. const
  3. SettingsRegKey = 'SoftwareMyProgaSettings';
  4. var
  5. Reg: TRegistry;
  6. begin
  7. Reg:= TRegistry.Create;
  8. try
  9. Reg.RootKey:= HKEY_CURRENT_USER;
  10. Reg.OpenKey(SettingsRegKey, True);
  11.  
  12. Reg.WriteInteger('DownloadPictures', PictureFormats2Int(FDownloadPictures));
  13. Reg.WriteInteger('DownloadBufferSize', FDownloadBufferSize);
  14. Reg.WriteInteger('DownloadPaths', DownloadPaths2Int(FDownloadPaths));
  15.  
  16. Reg.CloseKey;
  17. finally
  18. Reg.Free;
  19. end;
  20. end;


Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 5 октября 2006, 09:10
Оценка за ответ: 5

Комментарий к оценке: Спасибо

Ответ #2. Отвечает эксперт: Alex Van Glukhman

Здравствуйте, Князев А.А.!

Приложение:
  1. 1.В разделе uses подключаем модуль Registry
  2. 2.Объявляем переменную MyReg: TRegistry;
  3. 3.При желании объявляем строковую константу названия раздела. NK = 'NewKey'
  4. 4.В основном теле программы пишем:
  5.  
  6. //Создаём экземпляр переменной
  7. MyReg:=TRegistry.Create;
  8. //Определяем ROOT реестра - по умолчанию его
  9. //значение HKEY_CURRENT_USER
  10. MyReg.RootKey:=HKEY_CURRENT_CONFIG;
  11. //вводим новый раздел
  12. MyReg.Create(NK);
  13.  
  14. ...
  15. Готово - раздел появился!
  16.  
  17. для доступа и записи значения в ключ используем свойства CurrentPath и WriteString(const Name: String; const Value: String), WriteInteger(const Name: String; const Value: Integer) и т.д.
  18.  
  19. Данный метод не работает в NT с ReadOnly ROOT -
  20. HKEY_LOCAL_MACHINE и HKEY_USERS - для них необходимы админовские права для приложения
  21.  


Ответ отправил: Alex Van Glukhman (статус: 7-ой класс)
Время отправки: 5 октября 2006, 11:30
Оценка за ответ: 5

Комментарий к оценке: еще раз спасибо

Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 5 октября 2006, 15:43; участников в обсуждении: 3.
Князев А.А.

Князев А.А. (статус: Посетитель), 5 октября 2006, 10:20 [#1]:

А можно ли проверить, существует ли значение ключа под именем, например как у Вас, 'DownloadPictures'? KeyExists не подошло.
Alex Van Glukhman

Alex Van Glukhman (статус: 7-ой класс), 5 октября 2006, 11:36 [#2]:

Можно проверить с помощью KeyExists, только в этом случае используем свойство RootKey и CurrentPath для определения узла из которого необходимо выдрать значение
min@y™

min@y™ (статус: Доктор наук), 5 октября 2006, 15:43 [#3]:

[quote]
Князев А.А. (статус: Посетитель), 05.10.2006, 10:20:
А можно ли проверить, существует ли значение ключа под именем, например как у Вас, 'DownloadPictures'? KeyExists не подошло.
[/quote]

Хэлп - великая весчь! Почитай про класс TRegistry, там много интересного. Особенно метод [b]ValueExists method (TRegistry)[/b].
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

31 января 2011, 19:24: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.