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
      result:=StrPas(inet_ntoa(pptr^[I]^));
      Inc(I);
    end;
    WSACleanup;
end;

解决方案 »

  1.   

    用DelPhi 的 FTP(FastNet)控件的LocaIp(好象是这个名字)可取!
      

  2.   

    TClientSocket控件的LocalIp可以得到
      

  3.   

    其实你也可以用TServerSocket组件,然后设Enabled属性为真,这样里面就包含了你的机子的东东了,同时你还可以用这个组件以及TClientSocket组件实现一些网络功能,很简单。
      

  4.   

    在implementation下的uses子句中加入winsock然后可以用以下函数:
    function getlocalip():string;
    var
    phoste:PHostEnt;
    Buffer:array[0..100] of char;
    begin
    GetHostName(Buffer,Sizeof(Buffer));
    phoste:=GetHostByName(buffer);
    if phoste = nil then
      begin
        showmessage('wrong!');
        result:='';
      end
    else
      result:=StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
    end;
    去试试吧!我在Delphi5+nt4(sp6)下通过。
      

  5.   

    很简单的只要你的系统中注册了Activex 构件winsock activex controls, 那你的DELPHI中
    就会有这样两个组件TCP,UDP, 这时取得本机IP真是易如反掌了
    你只要在FORM中加入TCP,
    你在代码中只要写上这么一句就包你行了.
    tcp1.localIP  //get local host IP
    tcp1.localHostname  // get local computer nameanother tell you a API Fuction order to get computer user
    this API Fuction is :  BOOL GetUserName(LPTSTR lpBuffer, //存放名称的地址  
                                            LPDWORD nSize  //存放名称的长度的地址  );
    注意这个winsock activex controls 在 DELPHI 5 的光盘中就有.
    试试看吧! 包你满意!
      

  6.   

    function LocalIP: String;
    //取得本机IP地址
    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;