这么简单:
//***************************************************************
// 说明:
// 将32位整数IP地址以字符串表示
// 参数:
// ip : 无符号32位整数IP地址
// 返回:
// 表示IP地址的字符串
//****************************************************************
function IPAddress(ip:Cardinal):String;
begin
Result := Format('%u.%u.%u.%u',[ip and $000000FF,
ip and $0000FF00 shr 8,
ip and $00FF0000 shr 16,
ip and $FF000000 shr 24]);
end;
//***************************************************************
// 说明:
// 将IP地址字符串以32位整数表示
// 参数:
// ip : IP地址字符串
// 返回:
// 表示IP地址的无符号32位整数
//****************************************************************
function IPAddress( ip:String):Cardinal;
var
p : array[0..3] of Cardinal;
begin
p[0] := 1;
while p[0] <= Length(ip) do
begin
if ip[p[0]] in ['.'] then ip[p[0]]:= ',';
Inc(p[0]);
end;
p[0] := StrToIntDef(ExtractData(ip,0),0);
p[1] := StrToIntDef(ExtractData(ip,1),0);
p[2] := StrToIntDef(ExtractData(ip,2),0);
p[3] := StrToIntDef(ExtractData(ip,3),0);
result := (p[3] shl 24) + (p[2] shl 16) + (p[1] shl 8) + p[0];
end;