Zocik
Дата: 12.05.2011 17:36:36
Здравствуйте. Помогите студентке плиз.
Надо считать параметр ключа айпи адреса
Наваяла такой код
автор |
---|
procedure TForm1.Button1Click(Sender: TObject); var reg: TRegistry; begin Reg := TRegistry.Create; Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('System',true); Reg.OpenKey('ControlSet001',true); Reg.OpenKey('Services',true); Reg.OpenKey('{513CBABB-ED48-4136-9E01-391BC7488B54}',true); Reg.OpenKey('Parameters',true); Reg.OpenKey('Tcpip',true);
richedit1.Clear; richedit1.Lines.Add('Ваш IP = ' + reg.ReadString('IPAddress')) ; end; |
При выполнении выбивает такая ошибка 'Invalid data type for 'IPAddress''.
Подскажите плиз, что у меня не так. Хелп. Зараннее благодарна.
misha mike
Дата: 12.05.2011 17:54:08
Zocik, а почему вы собственно решили, что по этому пути вы найдете IP-адрес? То, что он у вас там лежит, не значит, что он там лежит у всех.
Во-первых, {513CBABB-ED48-4136-9E01-391BC7488B54} -- это уникальный идентификатор сетевого интерфейса, он такой только на вашей машине. Более того, если вы замените сетевую плату даже на совершенно однотипную, он изменится.
Во-вторых, IP-адресов даже на одном интерфейсе может быть сколько угодно, и тип параметра IPAddress (REG_MULTI_SZ) говорит об этом.
Во-третьих, сетевых интерфейсов может быть много, и у каждого из них, как я уже сказал выше, будет отдельный идентификатор и возможно наличие нескольких адресов.
Так что сама постановка вопроса "Какой у компьютера IP-адрес?" в корне некорректна.
misha mike
Дата: 12.05.2011 18:43:58
Zocik,
Список интерфейсов лежит тут: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces, тут же можно и адреса каждого узнать (если они, конечно, заданы). Но правильнее было бы использовать WMI.