自PCのIPアドレス取得

解決


たこ  2015-02-23 18:52:21  No: 47064  IP: [192.*.*.*]

自PCのIPアドレスを取得したいです。
DELPHI5だと下記コードで取得できたのですがDELPHI XE7だとエラーになります。
対応策をご存知の方はお教えください。

uses:Winsock,

type
  TNetworkInfo = record
    HostName: String;
    IPAddress: String;
end;

function GetMachineNetworkInfo: TNetworkInfo;
var
   wsaData  : TWsaData;
   hostName : array [0..255] of char;
   host     : PHostEnt;
   in_addr  : TInAddr;
begin
   WSAStartup($101, wsaData);
   WinSock.gethostname(hostName,sizeof(hostName));
   //↑ここでE2010 'PAnsiChar'と'array[0..255] of Char'には互換性がありませんと表示されます。
   host     := gethostbyname(hostName);
   in_addr  :=PInAddr(PInAddr(host^.h_addr_list)^)^;
   Result.HostName :=String(hostName);
   Result.IPAddress :=String(inet_ntoa(in_addr));
   WSACleanup;
end;



DELPHI5では下記コードで取得できましたがXE7だと

編集    削除
通りすがり  2015-02-23 22:09:57  No: 47065  IP: [192.*.*.*]

WinSock.gethostnameの第1パラメータはPAnsiCharなので、hostNameをarray [0..255] of AnsiCharと
定義しておく必要があります。
Delphi 2009以降ではString=UnicodeString、Char=WideCharとなります。

編集    削除
たこ  2015-02-25 21:21:25  No: 47066  IP: [192.*.*.*]

解決しました。
通りすがりさん、ありがとうございました。

編集    削除