同上.

解决方案 »

  1.   

    {=================================================================
      功  能: 返回本机的局域网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;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      EDIT1.Text:=IdIPWatch1.LocalName;
      EDIT2.Text:=IdIPWatch1.LocalIP;
    end;
      

  3.   

    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;
      

  4.   

    Buffer: array [0..63] of char;
    GetHostName(Buffer, SizeOf(Buffer));GetHostByName(buffer);