Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2009, 18:54   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Путь в реестре

Добрый вечер. Интересует такой вопрос: как сделать так, чтобы я в одном Edit-e указывал конкретную ветку в реестре, а во втором Edit-e прописывал значение, которое должно занестись в определенную ветку реестра? Кто чем может помочь?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.06.2009, 20:42   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Исключительно по вопросу.
Код:
Uses
Registry;
Procedure TForm1.Button1Click(Sender: TObject);
Var
Reg: TRegistry;
Begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey(Edit1.Text,True);//Указываем ветку в реестре
Reg.WriteString('Proga',Edit2.Text);//Параметр Proga, значение параметра с Edit
Reg.Free;
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 05.06.2009, 19:36   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот что у меня получилось:
Код:
//ValuePath - путь к ключу; Value - само значения; Add - если нет такого ключа то создать, иначе показать сообщение что ключ не найден
procedure SetStringValue(ValuePath, Value: string; Add: boolean);
var
 Root, Path, Key: string;
 reg: TRegistry;
begin
 Root := Copy(ValuePath, 1, Pos('\', ValuePath) - 1);
 Key := Copy(ValuePath, Pos('/', ValuePath) + 1, Length(ValuePath));
 Path := ValuePath;
 Delete(Path, 1, Pos('\', Path));
 Delete(Path, Pos('/', Path), Length(Path));

 reg := TRegistry.Create;
 try
  if Root = 'HKEY_CURRENT_USER' then
   reg.RootKey := HKEY_CURRENT_USER
  else if Root = 'HKEY_LOCAL_MACHINE' then
   reg.RootKey := HKEY_LOCAL_MACHINE
  else if Root = 'HKEY_CLASSES_ROOT' then
   reg.RootKey := HKEY_CLASSES_ROOT
  else if Root = 'HKEY_USERS' then
   reg.RootKey := HKEY_USERS
  else if Root = 'HKEY_PERFORMANCE_DATA' then
   reg.RootKey := HKEY_PERFORMANCE_DATA
  else if Root = 'HKEY_CURRENT_CONFIG' then
   reg.RootKey := HKEY_CURRENT_CONFIG
  else if Root = 'HKEY_DYN_DATA' then
   reg.RootKey := HKEY_DYN_DATA;

  if not reg.ValueExists(Path + Key) then
   if not Add then
   begin
    Application.MessageBox('Ключ не найден', 'Ошибка', MB_OK or MB_ICONSTOP);
    Exit;
   end;
  if Add then reg.OpenKey(Path, true) else reg.OpenKey(Path, false);

  reg.WriteString(Key, Value);
 finally
  reg.Free;
 end;
end;
Пример использования:
Код:
SetStringValue(Edit1.Text, Edit2.Text, false);
Пример данных:
Edit1: 'HKEY_CURRENT_USER\Software\Str\Str/Nik'
Edit2: 'artemavd'
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие в реестре ... KVANTOM Общие вопросы Delphi 2 15.01.2009 04:33
Поиск в реестре :( CrazyProgramer Общие вопросы Delphi 2 28.08.2008 01:43
Протоколирование изменений в реестре. Cerber24 Общие вопросы Delphi 1 07.05.2008 12:21
Проверка ключа в реестре Marsik Помощь студентам 5 24.04.2008 18:46
Поиск в реестре* не активном nivea Помощь студентам 3 14.01.2008 17:42