function LocalIP : String; type TArrayPInAddr = array [0..10] of PInAddr; PArrayPInAddr = ^ TArrayPInAddr; var phe : PHostEnt; pptr : PArrayPInAddr; Buffer : array [0..63] of char; i : integer; GInitData: TWSADATA; begin WSAStartup($101, GInitData); result := \'\'; GetHostName(Buffer, sizeof(Buffer)); phe := GetHostByName(Buffer); if phe=nil then begin exit end; pptr := PArrayPInAddr(phe^.h_addr_list); i := 0; while pptr^[i]<>nil do begin result := StrPas(inet_ntoa(pptr^[i]^)); Inc(i); end; WSACleanup; end;
i uses bruger den enten \"winsock\" eller \"wininet\" kan ikke lige huske...
og hvis du skal finde din udgående ip skal du til at lave alt muligt sjov, da den jo er opsat på fx en router... (vil jeg mene)...
type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Edit1Change(Sender: TObject); begin
Edit1.text := LocalIP;
end;
function LocalIP : String; type TArrayPInAddr = array [0..10] of PInAddr; PArrayPInAddr = ^ TArrayPInAddr; var phe : PHostEnt; pptr : PArrayPInAddr; Buffer : array [0..63] of char; i : integer; GInitData: TWSADATA; begin WSAStartup($101, GInitData); result := \'\'; GetHostName(Buffer, sizeof(Buffer)); phe := GetHostByName(Buffer); if phe=nil then begin exit end; pptr := PArrayPInAddr(phe^.h_addr_list); i := 0; while pptr^[i]<>nil do begin result := StrPas(inet_ntoa(pptr^[i]^)); Inc(i); end; WSACleanup; end;
end.
------------------------
men er der ikke et sted jeg mangelr at declare functionen?
type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
function LocalIP : String;
implementation
{$R *.DFM}
procedure TForm1.Edit1Change(Sender: TObject); begin
Edit1.text := LocalIP;
end;
function LocalIP : String; type TArrayPInAddr = array [0..10] of PInAddr; PArrayPInAddr = ^ TArrayPInAddr; var phe : PHostEnt; pptr : PArrayPInAddr; Buffer : array [0..63] of char; i : integer; GInitData: TWSADATA; begin WSAStartup($101, GInitData); result := \'\'; GetHostName(Buffer, sizeof(Buffer)); phe := GetHostByName(Buffer); if phe=nil then begin exit end; pptr := PArrayPInAddr(phe^.h_addr_list); i := 0; while pptr^[i]<>nil do begin result := StrPas(inet_ntoa(pptr^[i]^)); Inc(i); end; WSACleanup; end;
type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1Change(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.DFM}
function LocalIP : String; type TArrayPInAddr = array [0..10] of PInAddr; PArrayPInAddr = ^ TArrayPInAddr; var phe : PHostEnt; pptr : PArrayPInAddr; Buffer : array [0..63] of char; i : integer; GInitData: TWSADATA; begin WSAStartup($101, GInitData); result := \'\'; GetHostName(Buffer, sizeof(Buffer)); phe := GetHostByName(Buffer); if phe=nil then begin exit end; pptr := PArrayPInAddr(phe^.h_addr_list); i := 0; while pptr^[i]<>nil do begin result := StrPas(inet_ntoa(pptr^[i]^)); Inc(i); end; WSACleanup; end;
procedure TForm1.Edit1Change(Sender: TObject); begin
Nu virker det :) mange tak! Fuldt fortjente points til dig :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.