来自:http://www.scalabium.com/faq/dct0037.htm
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Winsock; 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.