Вниз
Скачать: CL | DM;

шестнадцатиричные значения ключей в реестре   Найти похожие ветки 

 
Вася   (2006-10-15 14:59) [0]

Привет всем! Нужно прочитать значение IPAddress из ключа реестра
SYSTEM\CurrentControlSet\Services\{F7A33661-7511-485A-AEAA-55683BEBCCE8}\Parameters\Tcpip
оно есть hex(7)
при создании объекта TRegistry в дельфи возникли трудности с извлечением значения из ключа. Методы объекта не позволяют читать шестнадцатиричные значения. Как это  сделать?
TRegistry.readstring(), .readbinary и пр выдаёт ошибку...


 
Anatoly Podgoretsky ©   (2006-10-15 15:45) [1]

Ключ не может быть ни каким hex - это всего лишь имя.
А в данном ключе очень много параметров.
Тебе надо разобраться, что ты хочешь получить, пока ничего получить нельзя.
readstring надо вызывать с параметрами и вообще у тебя ошибка в 17 строке.


 
kami ©   (2006-10-15 19:21) [2]

Вася   (15.10.06 14:59)
оно есть hex(7)

Посмотрел несколько подобных значений IPAddress- все имеют тип REG_MULTI_SZ
Работать с ними можно, например, так :
http://www.delphiworld.narod.ru/base/ex_tregistry.html
Только подправить нужно, глуповасто там разбиение по строкам сделано, да и еще что-то было плохое - уже не помню, давно под себя переделывал.


 
Вася   (2006-10-16 09:15) [3]

Приведу кусок из *.reg файла

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{F7A33661-7511-485A-AEAA-55683BEBCCE8}\Parameters\Tcpip]
"EnableDHCP"=dword:00000001
"IPAddress"=hex(7):30,00,2e,00,30,00,2e,00,30,00,2e,00,30,00,00,00,00,00
"SubnetMask"=hex(7):30,00,2e,00,30,00,2e,00,30,00,2e,00,30,00,00,00,00,00
"DefaultGateway"=hex(7):00,00

В редакторе реестра действительно оно имеет тип мульти строка, но при попытке записать вместо что то типа "192.168.64.56", в реестр то записывается нормально, только утилита (подключение по локальной сети-настройка протокола TCP/IP-свойства), не видит адреса, выдаёт пустую строку, а если записать так, как приведено выше - всё ок. По поводу строки с ошибкой:

   a := TRegistry.Create;
   a.RootKey := HKEY_LOCAL_MACHINE;
   a.OpenKey("SYSTEM\CurrentControlSet\Services\{F7A33661-7511-485A-AEAA-55683BEBCCE8}\Parameters\Tcpip", false);
   adress:=a.ReadString("IPAddress");
   str:="IPAddress";
   adress:=a.
   a.Free;

так понятнее, просто хотел сэкономить место.


 
Вася   (2006-10-16 09:17) [4]

a := TRegistry.Create;
  a.RootKey := HKEY_LOCAL_MACHINE;
  a.OpenKey("SYSTEM\CurrentControlSet\Services\{F7A33661-7511-485A-AEAA-55683BEBCCE8}\Parameters\Tcpip", false);
  adress:=a.ReadString("IPAddress");
  a.Free;


 
Anatoly Podgoretsky ©   (2006-10-16 19:20) [5]

Это не STRING, а список WideString = 0.0.0.0
Дельфи поддержки не имеет, надо писать свою функцию.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
6-1149542592
CShooter
2006-06-06 01:23
2006.10.29
NMpop31.GetMailMessage(NMpop31.MailCount) выдает ERangeError


1-1158764711
Alvin
2006-09-20 19:05
2006.10.29
Бесплатный Хостинг с поддержкой CGI на Delphi


6-1149835557
novill
2006-06-09 10:45
2006.10.29
Распознать имя отправителя письма ?


15-1159821795
Real
2006-10-03 00:43
2006.10.29
Хон-Гиль-Дон


2-1160382514
Volodya_
2006-10-09 12:28
2006.10.29
Excel->Delphi




   Наверх