![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразовать айпи в длинный тип
WebSqlNeederr © (2007-08-16 22:46:00)есть например стандартный вид айпи 212.42.81.15 а нужно его преобразовать в длинный вид, что то типа 6483746263. Есть ли в Делфи функция?
orinoko (2007-08-21 14:48:00) [1]у меня есть такое:
function TIncomModule.AddrTcpToDWORD(SAdr: string;var dwAddr:cardinal):boolean;
var i,p: integer;
C: word;
begin
result:=false;
dwAddr:=0;
if SAdr='' then exit;
SAdr:=SAdr+'.';
for i:=1 to 4 do
begin
p:=pos('.',SAdr);
if p=0 then exit;
c:=StrToInt(Copy(SAdr,1,p-1));
if c>255 then exit;
dwAddr:=(dwAddr shl 8) + C;
delete(SAdr,1,p);
end;
result:=true;
end;
function TIncomModule.DWORDToAddrTcp(dwAddr:cardinal;var SAdr: string):boolean;
var i: integer;
begin
result:=false;
SAdr:='';
for i:=0 to 3 do
begin
SAdr:=IntToStr((dwAddr shr (i*8))and 255)+SAdr;
if i<>3 then SAdr:='.'+SAdr;
end;
end;
DVM (2007-08-17 10:47:00) [2]или альтернатива такая:
function IpToLong(const ip: string): LongInt;
var
x, i: byte;
ipx: array[0..3] of byte;
v: integer;
begin
Result := 0;
longint(ipx) := 0;
i := 0;
for x := 1 to Length(ip) do
if ip[x] = '.' then
begin
inc(i);
if i = 4 then exit;
end
else
begin
if not (ip[x] in ['0'..'9']) then exit;
v := ipx[i] * 10 + ord(ip[x]) - ord('0');
if v > 255 then exit;
ipx[i] := v;
end;
result := longint(ipx);
end;
DVM (2007-08-17 10:46:00) [3]
function InetAddr(const AHost: string): integer;
var
PHost:PChar;
HostEnt: PHostEnt;
begin
if AHost = '' then
result := INADDR_NONE
else
begin
PHost := PChar(AHost);
Result := inet_addr(PHost);
if Result = INADDR_NONE then
begin
HostEnt := GetHostByName(PHost);
if HostEnt <> nil then
Result := integer(pointer(HostEnt^.h_addr^)^);
end;
end;
end;
umbra (2007-08-17 10:30:00) [4]
> а какой модуль подключить нужно ?
>
winsock
WebSQLNeederr (2007-08-17 09:29:00) [5]inet_addr('212.42.81.15'); а какой модуль подключить нужно ?
Anatoly Podgoretsky (2007-08-17 07:48:00) [6]> WebSqlNeederr (16.08.2007 22:46:00) [0]
Int32 не может хранить 6483746263
easy (2007-08-16 23:52:00) [7]inet_addr('212.42.81.15');