2009-07-17 15 views
3
内のローカルIPアドレスに

を取得する可能性の重複:
Delphi, How to get all local IPs?は、Delphi

サードパーティのコンポーネントを使用せずにデルファイ2009年のマシンのローカルIPアドレスを取得するための最も簡単な&最速の方法は何ですか?ありがとう。

+0

投票はnamebufの種類を変更した後http://stackoverflow.com/questions/576538/delphi-how-to-get-all-local-ips – mghie

答えて

9

から: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. 
+3

の重複として閉じますansicharの配列にコンパイルします。ありがとう! – Darius

+1

元の質問に、Delphi 2009を使用していたことを示す必要があります。使用しているDelphiのバージョンによっては、状況が変わることがあります。 –

+0

@Kishor:関数自体は、D7のWinsockユニットしか必要としません。それらはフォーム単位に追加された単なる共通単位です。 – Todd