Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IP to Integer и наооборот [D7, WinXP]


AlexDBases ©   (2003-11-26 11:40:00) 

Не подскажет кто функцию для представления IP в виде Integer и наооборот?


Rouse_   (2003-11-26 15:16:00) [1]

> [4] panov © (26.11.03 14:35)
Мой пример предназначен для работы с WC_IPADDRESS
А автор не конкретизировал что именно ему требуется в смысле для чего это ему требуется...
Поэтому, какой вопрос такие и ответы...


panov   (2003-11-26 14:35:00) [2]

Во всех примерах не учитывается сетевой порядок байт.
см. функции htonl,ntohl,inet_addr,inet_ntoa


xShadow   (2003-11-26 14:15:00) [3]

Function IPs_to_IntIP( const IP1, IP2, IP3, IP4: Byte ): LongWord;
//ип адрес в интедгер
var R: LongWord;
M: array[1..4] of LongWord;
I: Byte;
Begin
M[4] := 1;
for I := 3 downto 1 do
M[I] := M[I + 1] * 256;
R := IP1 * M[1] + IP2 * M[2] + IP3 * M[3] + IP4 * M[4];
IPs_to_IntIP := R;
end;

Procedure IntIP_to_IPs( const IP: LongWord; var IP1, IP2, IP3, IP4: Byte );
//интедгер в ипи адреса
var M: array[1..4] of LongWord;
I: Byte;
Begin
M[4] := 1;
for I := 3 downto 1 do
M[I] := M[I + 1] * 256;
IP1 := Trunc( IP / M[1] );
IP2 := Trunc( ( IP - IP1 * M[1] ) / M[2] );
IP3 := Trunc( ( IP - ( IP1 * M[1] + IP2 * M[2] ) ) / M[3] );
IP4 := Trunc( ( IP - ( IP1 * M[1] + IP2 * M[2] + IP3 * M[3] ) ) / M[4] );
end;


Тоже самое тока в моём исполнении пару лет назад...


AlexDBases   (2003-11-26 13:22:00) [4]

СПАСИБО!


Rouse_   (2003-11-26 13:11:00) [5]

uses ... CommCtrl;

procedure TForm1.Button1Click(Sender: TObject);
var
ipAddress: Integer;
begin
// Туда
ipAddress := MAKEIPADDRESS(127,0,0,1);
// Обратно
Caption :=
IntToStr(FIRST_IPADDRESS(ipAddress)) + "." +
IntToStr(SECOND_IPADDRESS(ipAddress)) + "." +
IntToStr(THIRD_IPADDRESS(ipAddress)) + "." +
IntToStr(FOURTH_IPADDRESS(ipAddress));
end;


Желаю успехов


Наверх

Титульная страница Поиск, карта сайта Написать письмо