请问如何得到本机地址? 多谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function TFORM1.LocalIP: string;type TaPInAddr = array [0..10] of PInAddr; PaPInAddr = ^TaPInAddr;var phe: PHostEnt; pptr: PaPInAddr; Buffer: array [0..63] of char; I: Integer; GInitData: TWSADATA;begin //取得本机所有IP WSAStartup($101, GInitData); Result := ''; GetHostName(Buffer, SizeOf(Buffer)); phe :=GetHostByName(buffer); if phe = nil then Exit; pptr := PaPInAddr(Phe^.h_addr_list); I := 0; while pptr^[I] <> nil do begin result:= result + '#' + StrPas(inet_ntoa(pptr^[I]^)); Inc(I); end; WSACleanup;end;procedure TForm1.Button12Click(Sender: TObject);beginSHOWMESSAGE(FORM1.LocalIP);end; to WWWWA(aaaa) 编译时提示找不到 PInAddr结构, 是你自己编的结构吗 不出意外的话, WWWWA(aaaa) 的程序来自大富翁,所以(烦)也就别问PInAddr,那我也借它来回答您:在窗体上放一 TNMFTP组件,按纽的Onclick label1.caption:=localip; 好像在WinSock中定义的。uses WinSock; function LocalIP:string; typeTaPInAddr = array [0..10] of PInAddr;PaPInAddr = ^TaPInAddr;varphe : PHostEnt;pptr : PaPInAddr;Buffer : array [0..63] of char;I : Integer;GInitData : TWSADATA;beginWSAStartup($101, GInitData);Result := '';GetHostName(Buffer, SizeOf(Buffer));phe :=GetHostByName(buffer);if phe = nil then Exit;pptr := PaPInAddr(Phe^.h_addr_list);I := 0;while pptr^[I] <> nil do beginresult:=StrPas(inet_ntoa(pptr^[I]^));Inc(I);end;WSACleanup;end;========================================program get_ip;useswinsock,sysutils;VARch : ARRAY[1..32] OF Char;i : Integer;WSData: TWSAData;MyHost: PHostEnt;beginIF WSAstartup(2,wsdata)<>0 THENBEGINWriteln('can''t start Winsock: Error ',WSAGetLastError);Halt(2);END;tryIF getHostName(@ch[1],32)<>0 THENBEGINWriteln('getHostName failed');Halt(3);END;exceptWriteln('getHostName failed');halt(3);end;MyHost:=GetHostByName(@ch[1]);IF MyHost=NIL THENBEGINWriteln(GetHostName('+StrPas(@ch[1])+') failed : Error'+IntToStr(WSAGetLastError));Halt(4);ENDELSEBEGINWrite('address ');FOR i:=1 TO 4 DOBEGINWrite(Ord(MyHost.h_addr^[i-1]));IF i<4 THENthen write('.')ELSEwriteln;END;END;end.=========================================== 求助痕迹保留的思路 Win98的共享borlndmm.dll错误。 TSHFileOpStruct复制文件的问题 紧急求助 关于sql计算次数重复的问题 请问各位大侠关于远程连接的问题 那位兄台知道,怎样在SQL Server中定义一个象Access那样自动编号的ID字段. 怎样打开文件 如何控制windows的启动 菜鸟一问:UpdateSQL组件是作什么用的?我用普通的Query的SQL也可以呀 用inteaweb中的isapiapplication生成的dll发布有问题 cqzyf
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array [0..63] of char;
I: Integer;
GInitData: TWSADATA;
begin //取得本机所有IP
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:= result + '#' + StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
procedure TForm1.Button12Click(Sender: TObject);
beginSHOWMESSAGE(FORM1.LocalIP);
end;
在窗体上放一 TNMFTP组件,按纽的Onclick
label1.caption:=localip;
WinSock;
typeTaPInAddr = array [0..10] of PInAddr;PaPInAddr = ^TaPInAddr;varphe : PHostEnt;pptr : PaPInAddr;Buffer : array [0..63] of char;I : Integer;GInitData : TWSADATA;beginWSAStartup($101, GInitData);Result := '';GetHostName(Buffer, SizeOf(Buffer));phe :=GetHostByName(buffer);if phe = nil then Exit;pptr := PaPInAddr(Phe^.h_addr_list);I := 0;while pptr^[I] <> nil do beginresult:=StrPas(inet_ntoa(pptr^[I]^));Inc(I);end;WSACleanup;end;========================================program get_ip;useswinsock,sysutils;VARch : ARRAY[1..32] OF Char;i : Integer;WSData: TWSAData;MyHost: PHostEnt;beginIF WSAstartup(2,wsdata)<>0 THENBEGINWriteln('can''t start Winsock: Error ',WSAGetLastError);Halt(2);END;tryIF getHostName(@ch[1],32)<>0 THENBEGINWriteln('getHostName failed');Halt(3);END;exceptWriteln('getHostName failed');halt(3);end;MyHost:=GetHostByName(@ch[1]);IF MyHost=NIL THENBEGINWriteln(GetHostName('+StrPas(@ch[1])+') failed : Error'+IntToStr(WSAGetLastError));Halt(4);ENDELSEBEGINWrite('address ');FOR i:=1 TO 4 DOBEGINWrite(Ord(MyHost.h_addr^[i-1]));IF i<4 THENthen write('.')ELSEwriteln;END;END;end.===========================================