Toto zoberie prvu adresu, ktoru najde (okrem 127.0.0.1).
Kód:
uses IPHlpAPI;
procedure TfrmMain.DetectIP;
var IPAddrRow: TMibIPAddrRow;
    TableSize, ErrorCode, NumEntries: DWord;
    I: Integer;
    pBuf: PChar;
begin
  MyIP := 0;
  LoadIpHlp;
  TableSize := 0;
  // first call: get table length
  ErrorCode := GetIpAddrTable(Nil, @TableSize, true);
  if Errorcode <> ERROR_INSUFFICIENT_BUFFER then Exit;

  GetMem(pBuf, TableSize);
  // get table
  ErrorCode := GetIpAddrTable(PTMibIPAddrTable(pBuf), @TableSize, true);
  if ErrorCode = NO_ERROR then
  begin
    NumEntries := PTMibIPAddrTable(pBuf)^.dwNumEntries;
    if NumEntries > 0 then
    begin
      for i := 1 to NumEntries do
      begin
        IPAddrRow := PTMIBIPAddrRow(pBuf+SizeOf(DWord)+(I-1)*SizeOf(TMIBIPAddrRow))^;
        if (IPAddrRow.dwAddr<>0) then
         begin
           MyIP := IPAddrRow.dwAddr;
           MyMask := IPAddrRow.dwMask;
           Bcast := MyIP and MyMask or not MyMask;
           if MyIP<>$100007F then Break; // 127.0.0.1
         end;
      end;
    end;
  end;
  FreeMem(pBuf);
 if MyIP=0 then
   begin
     ShowMessage(MSG_ERROR, 'Unable to detect network settings');
     Exit;
   end;
  StatusBar.Panels[1].Text := 'IP: '+UDPSocket.IPtoDotDot(MyIP);
  StatusBar.Panels[2].Text := 'Mask: '+UDPSocket.IPtoDotDot(MyMask);
  StatusBar.Panels[3].Text := 'Broadcast: '+UDPSocket.IPtoDotDot(Bcast);
  ShowMessage(MSG_SYSTEM, 'Detected '+StatusBar.Panels[1].Text+', '+StatusBar.Panels[2].Text+', '+StatusBar.Panels[3].Text);
end;