![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
шестнадцатиричные значения ключей в реестре [D6, WinXP]
Вася © (2006-10-15 14:59:00)Привет всем! Нужно прочитать значение IPAddress из ключа реестра
SYSTEM\CurrentControlSet\Services\{F7A33661-7511-485A-AEAA-55683BEBCCE8}\Parameters\Tcpip
оно есть hex(7)
при создании объекта TRegistry в дельфи возникли трудности с извлечением значения из ключа. Методы объекта не позволяют читать шестнадцатиричные значения. Как это сделать?
TRegistry.readstring(), .readbinary и пр выдаёт ошибку...
Anatoly Podgoretsky (2006-10-16 19:20:00) [1]Это не STRING, а список WideString = 0.0.0.0
Дельфи поддержки не имеет, надо писать свою функцию.
Вася (2006-10-16 09:17:00) [2]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;
Вася (2006-10-16 09:15:00) [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;
так понятнее, просто хотел сэкономить место.
kami (2006-10-15 19:21:00) [4]Вася (15.10.06 14:59)
оно есть hex(7)
Посмотрел несколько подобных значений IPAddress- все имеют тип REG_MULTI_SZ
Работать с ними можно, например, так :
http://www.delphiworld.narod.ru/base/ex_tregistry.html
Только подправить нужно, глуповасто там разбиение по строкам сделано, да и еще что-то было плохое - уже не помню, давно под себя переделывал.
Anatoly Podgoretsky (2006-10-15 15:45:00) [5]Ключ не может быть ни каким hex - это всего лишь имя.
А в данном ключе очень много параметров.
Тебе надо разобраться, что ты хочешь получить, пока ничего получить нельзя.
readstring надо вызывать с параметрами и вообще у тебя ошибка в 17 строке.