同上,谢了
解决方案 »
- 100分请教各位Pascal大大们
- 请问如何在Delphi中将Excel表(*.xls)转化为html文件?
- TIdUDPServer控件能否添加到我自己定义的一个非窗体类中?
- 新手问个问题
- 送500分!!如何将EBCDIC码转换成ASCII码?
- 那里有工程进度横线图控件或方法+500分
- 请教几个基本常识
- 高分求解有关文件夹的简单问题(UP有分,不够再给)
- 一次查询两个表,显示关联一个字段?
- 送分,旧帖重贴:现在说说这个list index out of bound(%d)
- 如何让ActionManager做的菜单中的某一个菜单项的Enalbed设为false,就是让某一菜单项为灰,不让使用???我没有找到Enabled的属性呀??
- 调用API不成功
用语句Memo1.Lines.Add('本机IP地址:'+LocalIP);就可以
//返回本机IP地址,多个地址之间用回车换行分隔
function 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
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
if i=0
then result:=StrPas(inet_ntoa(pptr^[I]^))
else result:=result+','+StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
中的一个Ipwatch中的属性:LocalIp
就可以直接获得本机的Ip地址
VAR
ch : ARRAY[1..32] OF Char;
i : Integer;
WSData: TWSAData;
MyHost: PHostEnt;
ip :string;
begin
ip :='';
IF WSAstartup(2,wsdata)<>0 THEN
BEGIN
application.MessageBox(pchar('不能打开 Winsock: 错误 '+inttostr(WSAGetLastError)),'操作信息',mb_ok+mb_iconinformation);
Halt(2);
END;
try
IF getHostName(@ch[1],32)<>0 THEN
BEGIN
application.MessageBox(pchar('得到IP失败'),'操作信息',mb_ok+mb_iconinformation);
Halt(3);
END;
except
application.MessageBox(pchar('得到IP失败'),'操作信息',mb_ok+mb_iconinformation);
halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
IF MyHost=NIL THEN
BEGIN
Halt(4);
END
ELSE
BEGIN
FOR i:=1 TO 4 DO
BEGIN
ip :=ip+inttostr(ord(myhost.h_addr^[i-1]));
IF i<4 THEN
ip :=ip+'.';
END;
END;
result :=ip;
end;