Windows IP地址怎么转换为String类型?-----------在线等,着急中-------(150分)

  • 主题发起人 主题发起人 guofengdelphi
  • 开始时间 开始时间
弱智,数学题也问
 
楼上回答问题不要攻击别人!
 
function lw2ip(lw: LongWord): string;
begin
Result := IntToStr(lw shr 24 and 255) + '.' +
IntToStr(lw shr 16 and 255) + '.' +
IntToStr(lw shr 8 and 255) + '.' +
IntToStr(lw and 255);
end;

function ip2lw(ip: String): LongWord;
var
idx: ShortInt;
begin
Result := 0;
ip := ip + '.';
while ip <> '' do
begin
idx := Pos('.', ip);
Result := Result shl 8 + StrToInt(Copy(ip, 1, idx - 1));
ip := Copy(ip, idx + 1, Length(ip) - idx);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
lw: LongWord;
ip: string;
begin
lw := 3232235778;
Edit1.Text := lw2ip(lw);

ip := '192.168.1.2';
Edit2.Text := IntToStr(ip2lw(ip));
end;

已经测试过了,好用,效率也应该没有大问题。
不过这两个函数中没考虑输入数据异常的情况。
 
uses ........winsock2;
var
wIP:longword; //longword型IP
sIP:string;
Addr:TInAddr;
wsaData:TwsaData;
//---------------
wsaStatup(makeWord(2,2),wsaData);
Addr.S_addr:=htonl(wIP);
结果:=TInAddrToString(Addr);
wsacleanup;
//-----------------------------------------------------
function TInAddrToString(Addr:TInAddr):string;stdcall;
begin
Result:=IntToStr(byte(Addr.S_un_b.s_b1));
Result:=Result+'.';
Result:=Result+ IntToStr(byte(Addr.S_un_b.s_b2));
Result:=Result+'.';
Result:=Result+ IntToStr(byte(Addr.S_un_b.s_b3));
Result:=Result+'.';
Result:=Result+ IntToStr(byte(Addr.S_un_b.s_b4));
end;
 
非常感谢大家的支持和帮忙!
小弟领教了!
 
发分啊~我穷~
 
看看indy的idStackWindows的源码吧~~很好的网络教程~~什么都有~~像TInAddrToString函数indy就比我写得经典~~
 
uses
WinSock;
function IpToString(const Ip : DWORD) : string;
var
N : TInAddr;
begin
Result := '';
N.S_addr := Ip;
Result := inet_ntoa(N);
end;
 
给分了,
不过,希望那些说在脏话的同志以后注意点礼貌,这里是公共场合!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
735
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部