Получение локального IP адреса в некоторых версиях windows и некоторых версиях linux
{$IFDEF WINDOWS},Winsock {$ENDIF},process,strutils
procedure GetCommandResult(Command:string;Params:TStringList);
var
  VProcess: TProcess;
begin
  VProcess := TProcess.Create(nil);
  try
    VProcess.Executable:=Command;
    VProcess.Parameters:=Params;
    VProcess.Options := [poWaitOnExit, poUsePipes];
    VProcess.Execute;
    Params.LoadFromStream(VProcess.Output);
  finally
    FreeAndNil(VProcess);
  end;
end;
function GetLocalIP: string;
{$IFDEF UNIX}
var
  I:Integer;
  Params, VStrTemp: TStringList;
{$ENDIF}
{$IFDEF MSWINDOWS}
var
  VWSAData: TWSAData;
  VHostEnt: PHostEnt;
  VName: string;
  const CFormatIPMask = '%d.%d.%d.%d';
{$ENDIF}
begin
  Result := '';
{$IFDEF UNIX}
  VStrTemp := TStringList.Create;
  Params:=TStringList.Create;
  Params.Add('-n');
  GetCommandResult('/sbin/route',Params);
  VStrTemp.Clear;
  VStrTemp.Sorted:=true;
  VStrTemp.Duplicates:=dupIgnore;
  for i:=0 to Params.Count-1 do
  begin
    if (Pos('0.0.0.0',Params[i])>0) and (Pos('U',ExtractWord(4,Params[i],[' ']))>0) then VStrTemp.Add(ExtractWord(8,Params[i],[' ']));
  end;
  Params.Clear;
  Params.Add(VStrTemp[0]);
  GetCommandResult('/sbin/ifconfig',Params);
  Result:=Params.Text;
  Result:=Copy(Result,Pos('inet addr',Result)+10,20);
  Result:=Trim(ExtractWord(1,Result,[':',' ']));
  FreeAndNil(VStrTemp);
  FreeAndNil(Params);
{$ENDIF}
{$IFDEF MSWINDOWS}
{$HINTS OFF}
  WSAStartup(2, VWSAData);
{$HINTS ON}
  SetLength(VName, 255);
  GetHostName(PChar(VName), 255);
  SetLength(VName, StrLen(PChar(VName)));
  VHostEnt := GetHostByName(PChar(VName));
  with VHostEnt^ do
    Result := Format(CFormatIPMask, [Byte(h_addr^[0]), Byte(h_addr^[1]),
      Byte(h_addr^[2]), Byte(h_addr^[3])]);
  WSACleanup;
{$ENDIF}
end;
ev: отредактировал заголовок и добавил примечание
			
				




