以下的函数取自CSDN,但不记得是哪篇文章了
function GetLocalIpAddress : String;
var
  WSADataVar: WSAData;
  HostName  : array[0..255] of char;
  HostEntVar: PHostEnt;
  InetAddr  : in_addr;
begin
  Result := '';  if WSAStartup(MakeWord(2, 0), WSADataVar) = 0 then
  begin
    if GetHostName(HostName, 256) = 0 then
      Result := HostName;    HostEntVar := GetHostbyName(HostName);
    if not(HostEntVar = nil) then
    begin
      InetAddr.S_un_b.s_b1 := HostEntVar.h_addr_list^[0];
      InetAddr.S_un_b.s_b2 := HostEntVar.h_addr_list^[1];
      InetAddr.S_un_b.s_b3 := HostEntVar.h_addr_list^[2];
      InetAddr.S_un_b.s_b4 := HostEntVar.h_addr_list^[3];
      Result := Inet_NtoA(InetAddr);
    end;
    WSACleanUp;
  end;
end;