自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だと
WinSock.gethostnameの第1パラメータはPAnsiCharなので、hostNameをarray [0..255] of AnsiCharと
定義しておく必要があります。
Delphi 2009以降ではString=UnicodeString、Char=WideCharとなります。
解決しました。
通りすがりさん、ありがとうございました。
ツイート | ![]() |