2009-07-17 6 views

Antwort

9

Von: 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

schließen Nach Art der namebuf Ändern zu einer Reihe von ansichar compiles. Vielen Dank! – Darius

+1

Sie sollten in Ihrer ursprünglichen Frage angegeben haben, dass Sie Delphi 2009 dann verwendet haben. Denken Sie daran, dass sich die Dinge manchmal ändern können, je nachdem, welche Version von Delphi Sie verwenden. –

+0

@Kishor: Die Funktion selbst benötigt nur die Winsock-Einheit, in D7 sowieso. Diese anderen sind nur die allgemeinen Einheiten, die zu einer Formulareinheit hinzugefügt werden. – Todd