通过哪个函数可以得到本机的IP地址和主机名称?在线等待,马上给分 同上. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 {================================================================= 功 能: 返回本机的局域网Ip地址 参 数: 无 返回值: 成功: True, 并填充LocalIp 失败: False =================================================================}function GetLocalIP(var LocalIp: string): Boolean;var HostEnt: PHostEnt; Ip: string; addr: pchar; Buffer: array [0..63] of char; GInitData: TWSADATA;begin Result := False; try WSAStartup(2, GInitData); GetHostName(Buffer, SizeOf(Buffer)); HostEnt := GetHostByName(buffer); if HostEnt = nil then Exit; addr := HostEnt^.h_addr_list^; ip := Format('%d.%d.%d.%d', [byte(addr [0]), byte (addr [1]), byte (addr [2]), byte (addr [3])]); LocalIp := Ip; Result := True; finally WSACleanup; end;end; procedure TForm1.Button1Click(Sender: TObject);begin EDIT1.Text:=IdIPWatch1.LocalName; EDIT2.Text:=IdIPWatch1.LocalIP;end; copy过来的uses windows,winsock;const MAX_COMPUTERNAME_LENGTH = 255;...{------------------------------------------------------}{功能:取机器名入口参数:无返回结果:string类型的机器名说明:是因为windows API返回的是PChar型才做的函数}function get_computer_name : String;var pcComputer : PChar; dwCSize : DWORD;begin dwCSize := MAX_COMPUTERNAME_LENGTH + 1; GetMem( pcComputer, dwCSize ); // allocate memory for the string try if Windows.GetComputerName( pcComputer, dwCSize ) then Result := pcComputer; finally FreeMem( pcComputer ); // now free the memory allocated for the string end;end;{------------------------------------------------------}{功能:取本地机器IP地址入口参数:无返回结果:string类型的IP地址说明:uses winsock.}function get_computer_IP : 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 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:=StrPas(inet_ntoa(pptr^[I]^)); Inc(I); end; WSACleanup;end; Buffer: array [0..63] of char;GetHostName(Buffer, SizeOf(Buffer));GetHostByName(buffer); delphi 中MaskEdit控件怎么判断为空。。 ADOQuery的刷新問題? 不行了。存报表。死活做不上来了。救命Qreport D6 大家看看一个关于执行SQL语句的问题. 多层数据库应用的问题 如何关闭dbf表 abc.mdb中有密码为abcd,如何在程序中加入密码,而不使用系统代的密码输入界面? ISAPI不能正确执行 程序打包问题,教教我吧,我啥都不会:( 用什么方法实现根据用户权限不同,主菜单显示不同的项? 请问如何用sendmessage来移动边框为none的窗体? 如何获得本地、远程计算机的地址及计算机名
功 能: 返回本机的局域网Ip地址
参 数: 无
返回值: 成功: True, 并填充LocalIp 失败: False
=================================================================}
function GetLocalIP(var LocalIp: string): Boolean;
var
HostEnt: PHostEnt;
Ip: string;
addr: pchar;
Buffer: array [0..63] of char;
GInitData: TWSADATA;
begin
Result := False;
try
WSAStartup(2, GInitData);
GetHostName(Buffer, SizeOf(Buffer));
HostEnt := GetHostByName(buffer);
if HostEnt = nil then Exit;
addr := HostEnt^.h_addr_list^;
ip := Format('%d.%d.%d.%d', [byte(addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
LocalIp := Ip;
Result := True;
finally
WSACleanup;
end;
end;
begin
EDIT1.Text:=IdIPWatch1.LocalName;
EDIT2.Text:=IdIPWatch1.LocalIP;
end;
const
MAX_COMPUTERNAME_LENGTH = 255;
...{------------------------------------------------------}
{
功能:取机器名
入口参数:无
返回结果:string类型的机器名
说明:是因为windows API返回的是PChar型才做的函数
}
function get_computer_name : String;
var
pcComputer : PChar;
dwCSize : DWORD;
begin
dwCSize := MAX_COMPUTERNAME_LENGTH + 1;
GetMem( pcComputer, dwCSize ); // allocate memory for the string
try
if Windows.GetComputerName( pcComputer, dwCSize ) then
Result := pcComputer;
finally
FreeMem( pcComputer ); // now free the memory allocated for the string
end;
end;
{------------------------------------------------------}
{
功能:取本地机器IP地址
入口参数:无
返回结果:string类型的IP地址
说明:uses winsock.
}
function get_computer_IP : 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
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:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
GetHostName(Buffer, SizeOf(Buffer));GetHostByName(buffer);