Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ip Auslesen oder ganze Ipconfig (https://www.delphipraxis.net/58451-ip-auslesen-oder-ganze-ipconfig.html)

Pump3r 7. Dez 2005 10:46


Ip Auslesen oder ganze Ipconfig
 
Hi, kann mir wer sagen, wie ich meine Ip-Adresse mit delphi auslesen kann?
oder den Rechnernamen, oder am besten die gesamte: [ipconfig /all]


bin dankbar für jede hilfe...


gruß pump3r :wink:

etom291272 7. Dez 2005 10:53

Re: Ip Auslesen oder ganze Ipconfig
 
so kommst du an die ip adresse

Delphi-Quellcode:
uses winsock;//wichtig

function HoleIpAddresse: string;
var phoste: PHostEnt;
    Buffer: array [0..100] of char;
    WSAData: TWSADATA;
begin
    result := '';
    if WSAStartup($0101, WSAData) <> 0 then exit;
    GetHostName(Buffer,Sizeof(Buffer));
    phoste:=GetHostByName(buffer);
    if phoste = nil then
    result := '127.0.0.1'
    else
    result := StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
    WSACleanup;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(HoleIpAddresse);
end;

Pump3r 7. Dez 2005 10:54

Re: Ip Auslesen oder ganze Ipconfig
 
danke!

den rechnernamen könnte ich aus der registry asulesen, nur ist der an einer stelle, wo ich nicht weiß ob das bei allen betreibsystemn gleich ist.

etom291272 7. Dez 2005 10:56

Re: Ip Auslesen oder ganze Ipconfig
 
schau dir mal den code an
Delphi-Quellcode:
 GetHostName(Buffer,Sizeof(Buffer));
 phoste:=GetHostByName(buffer);
in diesem code ist auch die lösung für den computernamen

Pump3r 7. Dez 2005 10:57

Re: Ip Auslesen oder ganze Ipconfig
 
aha!

hehe, ok das bekomm ich hin.


danke

Mike_ 19. Jan 2011 02:01

AW: Re: Ip Auslesen oder ganze Ipconfig
 
Zitat:

Zitat von Pump3r (Beitrag 395940)
aha!

hehe, ok das bekomm ich hin.


danke

Der Thread ist zwar alt, aber ich habe überall nur Funktionen gefunden die selbst geschrieben wurden als ich danach gesucht habe.

Es geht auch einfacher:

1.) Komponent TCPServer auf die Form ziehen.
2.) Im Quellcode entsprechend schreiben was man braucht, z.B. TCPServer1.LocalHostAddr (In deinem Falle).

s.h.a.r.k 19. Jan 2011 03:30

AW: Ip Auslesen oder ganze Ipconfig
 
Es scheint einfacher zu sein, ist aber eher unsauber. Du holst dir ziemlich viel Overhead in dein Programm, nur um die IP-Adresse auszulesen?

Mike_ 19. Jan 2011 22:57

AW: Ip Auslesen oder ganze Ipconfig
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1075712)
Es scheint einfacher zu sein, ist aber eher unsauber. Du holst dir ziemlich viel Overhead in dein Programm, nur um die IP-Adresse auszulesen?

Wenn man es so genau nimmt hast du natürlich Recht, dass man sich eine große Unit dadurch einbindet welche man nicht im vollen Funktionsumfang ausschöpft.

Dann gibt es die Methode sich einfach aus der Unit die Function zu ziehen bzw "abzuschreiben", so dass diese auch außerhalb der Unit funktioniert (In diesem Falle die Sockets Unit) oder man schreibt es gleich selbst.

Durch die Unit hätte man aber gleich seinen "Anhaltspunkt, wie was funktioniert".

Als Beispiel für diesen Fall:


Delphi-Quellcode:
function TIpSocket.LocalHostAddr: TSocketHost;
begin
  Result := LookupHostAddr(LocalHostName);
end;

Wobei wir dann zu folgendem kommen

Delphi-Quellcode:
function TIpSocket.LookupHostAddr(const hn: string): TSocketHost;
var
  h: PHostEnt;
begin
  Result := '';
  if hn <> '' then
  begin
    if hn[1] in ['0'..'9'] then
    begin
      if inet_addr(pchar(hn)) <> INADDR_NONE then
        Result := hn;
    end
    else
    begin
      h := gethostbyname(pchar(hn));
      if h <> nil then
        with h^ do
        Result := format('%d.%d.%d.%d', [ord(h_addr^[0]), ord(h_addr^[1]),
              ord(h_addr^[2]), ord(h_addr^[3])]);
    end;
  end
  else Result := '0.0.0.0';
end;
Ich finde es ist eine wunderbare Methode um sich Funktionen zu stibitzen ohne viel Aufwand :lol:
(Selbst wenn man nicht die ganze Unit einbinden will aus deinen o.g. Gründen)

Hat mir im "täglichem Betrieb" oft geholfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz