![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как взять нужный IP? [D6, Win95/98, Win2k, WinXP]
Knight © (2004-11-27 11:24:00)Стоит две сетевые (одна LAN, вторая спутник) если делать по
http://delphimaster.ru/cgi-bin/faq.pl?look=1&id=988620992&n=20
берётся не тот... какой функцией можно найти все карты, для вывода диалога выбора нужной?
Knight (2004-11-27 22:37:00) [1]
> [7] Anatoly Podgoretsky © (27.11.04 16:11)
Вот и смотрю, вроде list, а PChar без размера данных... Спасибо. Всё ок... :)
Anatoly Podgoretsky (2004-11-27 16:11:00) [2]Function LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
Begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
// Phe^.h_addr_list - должен содержать IPдля всех интерфейсов.
I := 0;
while pptr^[I] <> nil do begin
// приводим их по очерёдности к нормальному виду
Result := Result + StrPas(inet_ntoa(pptr^[I]^)) + '#10#13' ;
Inc(I);
end;
WSACleanup;
End;
Anatoly Podgoretsky (2004-11-27 15:48:00) [3]Да ты прав, я тоже проверил поиском в данном FAQ нет нормального примера, но это не проблема, ты сам сможешь его поправить.
p.h_addr_list^ это список ИП адресов, ты должен просто пройтись по нему в цикле, пока не встретишь пустую строку.
Knight (2004-11-27 15:04:00) [4]Касательно ипов только два... практически идентичных...
http://delphimaster.ru/cgi-bin/faq.pl?look=1&id=988620992&n=20
http://delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622334&n=20
Anatoly Podgoretsky (2004-11-27 14:51:00) [5]В том же FAQ найдешь примеры не такие глупые, а которые берут все адреса, а не первый попавшийся.
Knight (2004-11-27 14:48:00) [6]Ничего не находиться... %(
Knight (2004-11-27 11:57:00) [7]Тоже чё-то не то...
Knight (2004-11-27 11:42:00) [8]Кажись нашёл... WNetOpenEnum и WNetEnumResource... пошёл пробовать...