Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.03.2013, 20:01
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Чтение реестра

Доброго всем вечера.
Есть нужда упростить работу. Проверить откуда комп синхронизирует время, ну и остальные параметры тоже...
Делаю так, и получаю ошибку.
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
  Reg:TRegIniFile;
begin
 Reg := TRegIniFile.Create;
 Reg.RootKey:=HKEY_LOCAL_MACHINE;
 Reg.OpenKey('SYSTEM', true);
 Reg.OpenKey('CurrentControlSet', true);
 Reg.OpenKey('servises', true);
 Reg.OpenKey('W32Time', true);
 Reg.OpenKey('Parametrs', true);
 LabeledEdit1.Text:= Reg.ReadString('NTPServer');
end;
Цитата:
[Error] Unit1.pas(46): Not enough actual parameters
Каких еще параметров не хватает?
Ответить с цитированием
  #2  
Старый 09.03.2013, 20:40
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Ctrl + Space тыкни, глянь.
Еще можно F1 тыкнуть, глянуть раздел по TRegIniFile.

Вроде ReadString принимает 3 параметра: секция, поле, дефолтное значение.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 09.03.2013 в 20:43.
Ответить с цитированием
  #3  
Старый 09.03.2013, 21:56
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Спутал 2 типа TRegistry и TRegIniFile. Исправь на
Код:
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create; 
...
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #4  
Старый 09.03.2013, 22:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от angvelem
Спутал 2 типа TRegistry и TRegIniFile. Исправь на
Код:
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create; 
...

Ага, и открывать надо ключ сразу по пути:
Код:
If Reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\servises\W32Time\Parametrs') Then // Ты ведь только читаешь...
  Begin
    If Reg.ValueExists('NTPServer')
      Then LabeledEdit1.Text:= Reg.ReadString('NTPServer')
      Else LabeledEdit1.Text:= 'N/A';
    Reg.CloseKey;
  End;
Ответить с цитированием
  #5  
Старый 10.03.2013, 11:12
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Исправил как подсказали angvelem и lmikle, ошибку не выдает при копиляции. Но судя по тому что в LabeledEdit1 у меня нет изменений при нажатии на кнопку, не может прочитать ключ реестра.
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
  Reg : TRegistry;
begin
 Reg := TRegistry.Create;
 If Reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\services\W32Time\Parameters') Then 
  Begin
    If Reg.ValueExists('NTPServer')
      Then LabeledEdit1.Text:= Reg.ReadString('NTPServer')
      Else LabeledEdit1.Text:= 'N/A';
    Reg.CloseKey;
  End;
  end;
Ответить с цитированием
  #6  
Старый 10.03.2013, 11:37
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Reg.RootKey:=HKEY_LOCAL_MACHINE не прописал.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
fofka (10.03.2013)
  #7  
Старый 10.03.2013, 12:03
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Все работает как нужно. Будем делать далее. Благодарю за подсказку.
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
  Reg : TRegistry;
begin
 Reg := TRegistry.Create;
 Reg.RootKey:=HKEY_LOCAL_MACHINE;
 If Reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\services\W32Time\Parameters') Then 
  Begin
    If Reg.ValueExists('NTPServer')
      Then LabeledEdit1.Text:= Reg.ReadString('NTPServer')
      Else LabeledEdit1.Text:= 'N/A';
    Reg.CloseKey;
  End;
  end;
Ответить с цитированием
  #8  
Старый 10.03.2013, 12:10
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Лучше подправить немного.
Код:
procedure TForm1.Button1Click(Sender: TObject);  
var
  Reg : TRegistry; 
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKeyReadOnly('SYSTEM\CurrentControlSet\services\W32Time\Parameters') then
  begin
    if Reg.ValueExists('NTPServer')  then
      LabeledEdit1.Text := Reg.ReadString('NTPServer')
    else
      LabeledEdit1.Text := 'N/A';
    Reg.CloseKey;
  end;
  Reg.Free;
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025