直接上代码(delphi xe 10.3通过)
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Winapi.Winsock;
Function GetIPAddress:String;
type
pu_long = ^u_long;
var
varTWSAData: TWSAData;
varPHostEnt: PHostEnt;
varTInAddr: TInAddr;
namebuf: Array[0..255] of AnsiChar;
begin
if WSAStartup($101, varTWSAData) <> 0 then
Result := '127.0.0.1'
else
begin
gethostname(namebuf, sizeof(namebuf));
varPHostEnt := gethostbyname(namebuf);
varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);
Result := '' + inet_ntoa(varTInAddr);
end;
WSACleanup;
end;
Function gethostnames:String;
type
pu_long = ^u_long;
var
varTWSAData: TWSAData;
varPHostEnt: PHostEnt;
varTInAddr: TInAddr;
namebuf: Array[0..255] of AnsiChar;
begin
if WSAStartup($101, varTWSAData) <> 0 then
Result := '127.0.0.1'
else
begin
gethostname(namebuf, sizeof(namebuf));
Result := namebuf;
end;
WSACleanup;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Caption:= getIPAddress+' '+gethostnames;
end;
end.