自PCのIPアドレス取得

解決


たこ  2015-02-23 18:52:21  No: 47064

自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

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


たこ  2015-02-25 21:21:25  No: 47066

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加