如何得到本机的IP?(100分)

  • 主题发起人 主题发起人 suntao
  • 开始时间 开始时间
S

suntao

Unregistered / Unconfirmed
GUEST, unregistred user!
请教怎样用DELPHI编的一段程序或函数,能得到本机的IP地址?多谢!
 
./DispQ.asp?LID=215568
自己去看吧
 
呵呵,再贴一遍
procedure TForm1.Button1Click(Sender: TObject);
var Ip,IpStr:string;
ch:array[1..32]of char;
i:integer;
WSData:TWSAData;
MyHost:PHostEnt;
begin
if WSAstartup(2,WSData)<>0 then
begin
ShowMessage('没有成功返回!');
Halt(2);
end;
try
if getHostName(@ch[1],32)<>0 then
begin
ShowMessage('没有成功返回!');
Halt(3);
end;
except
ShowMessage('没有成功返回!');
Halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
if MyHost=NIL then
begin
ShowMessage('没有成功返回!');
Halt(4);
end
else
begin
for i:=1 to 4do
begin
Ip:=inttostr(Ord(MyHost.h_addr^[i-1]));
ShowMessage('IP分段地址为:'+Ip);
IPStr:=IPStr+Ip;
if i<4 then
IPStr:=IPStr+'.'
else
ShowMessage('IP地址为:'+IPStr);
end;
end;
end;


 
uses Winsock;
function GetIP:String;
VAR
ch: Array [1..32] OF Char;
i: Integer;
S: String;
WSData: TWSAData;
MyHost: PHostEnt;
begin
if WSAstartup(2,WSData) <> 0 then
Halt(2);
try
if GetHostName(@ch[1],32) <> 0 then
Halt(3);
except halt(3);
end;
MyHost := GetHostByName(@ch[1]);
if MyHost = nil then

Halt(4)
else
begin
for i := 0 to 3do
begin
S := S + Inttostr(Ord(MyHost.H_Addr^));
if i < 3 then

S := S + '.';
end;
end;
Result:=s;
end;
 
请问:我上机试时,不认识TWSAData和PHostEnt是为什么?
 
uses中加 WinSock
 
多人接受答案了。
 
后退
顶部