tags:

views:

459

answers:

1

Possible Duplicate:
Delphi, How to get all local IPs?

What's the easiest & quickest method for obtaining a local IP address of the machine in Delphi 2009 without using 3rd-party components? Thanks.

+3  A: 

From: http://www.scalabium.com/faq/dct0037.htm

Function GetIPAddress():String;
type
  pu_long = ^u_long;
var
  varTWSAData : TWSAData;
  varPHostEnt : PHostEnt;
  varTInAddr : TInAddr;
  namebuf : Array[0..255] of char;
begin
  If WSAStartup($101,varTWSAData) <> 0 Then
  Result := 'No. IP Address'
  Else Begin
    gethostname(namebuf,sizeof(namebuf));
    varPHostEnt := gethostbyname(namebuf);
    varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);
    Result := 'IP Address: '+inet_ntoa(varTInAddr);
  End;
  WSACleanup;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := GetIPAddress;
end;

end.

Inlcudes:

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Winsock;

Kishork
After changing type of namebuf to array of ansichar compiles. Thanks!
Darius
You should have indicated in your original question that you were using Delphi 2009, then. Remember that things can sometimes change depending on what version of Delphi you're using.
Ken White
@Kishor: The function itself only requires the Winsock unit, in D7 anyway. Those others are just the common units added to a form unit.
Todd
Ken, he *did* indicate he was using Delphi 2009.
Rob Kennedy