AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lokale IP auslesen

Ein Thema von avadex · begonnen am 16. Jul 2008 · letzter Beitrag vom 28. Jul 2009
Antwort Antwort
avadex

Registriert seit: 5. Dez 2003
13 Beiträge
 
#1

Lokale IP auslesen

  Alt 16. Jul 2008, 14:33
Hi,

wie kann ich meine lokale IP auslesen? Das ganze sollte so einfach wie möglich sein. Ich möchte die IP auslesen, und dann weiter verarbeiten um sie dann mit einer fest vorgegebenen zu vergleichen.
  Mit Zitat antworten Zitat
Benutzerbild von bigben37
bigben37

Registriert seit: 19. Dez 2007
Ort: Freiburg
116 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Lokale IP auslesen

  Alt 16. Jul 2008, 14:43
IP-Adresse
Benjamin
Optimismus ist nur ein Mangel an Information
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Lokale IP auslesen

  Alt 16. Jul 2008, 14:44
Lokale IP-Adressen ermitteln


Folgende Funktion gibt die lokalen IP-Adressen zurück. Sie erwartet als Parameter eine abgeleitete Klasse von TStrings, wie beispielsweise TMemo.Lines oder TListbox.Items oder auch eine TStringList.

Sie gibt True zurück, wenn mindestens eine IP-Adresse ermittelt werden konnte. Sollte der Computer hinter einem Router liegen, wird die echte Internet-Adresse nicht berücksichtigt.

Die Unit WinSock muss eingebunden werden.

Delphi-Quellcode:
function GetLocalIPs(const Lines:TStrings):Boolean;
type
  PPInAddr= ^PInAddr;
var
  wsaData: TWSAData;
  HostInfo: PHostEnt;
  HostName: Array[0..255] of Char;
  Addr: PPInAddr;
begin
  Result:=False;
  Lines.Clear;
  if WSAStartup($0102, wsaData)=0 then
  try
    if gethostname(HostName, SizeOf(HostName)) = 0 then Begin
       HostInfo:= gethostbyname(HostName);
       if HostInfo<>nil then Begin
          Addr:=Pointer(HostInfo^.h_addr_list);
          if (Addr<>nil) AND (Addr^<>nil) then
             Repeat
                    Lines.Add(StrPas(inet_ntoa(Addr^^)));
                    inc(Addr);
             Until Addr^=nil;
       end;
    end;
    Result:=True;
  finally
    WSACleanup;
  end;
end;
Aufgerufen werden kann die Funktion z.B. so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not GetLocalIPs(Memo1.Lines) then
     MessageDLG('Keine IP-Adresse',mtInformation,[mbOK],0);
end;
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
avadex

Registriert seit: 5. Dez 2003
13 Beiträge
 
#4

Re: Lokale IP auslesen

  Alt 16. Jul 2008, 14:51
Super, ich danke euch !!!

Werde es wenn icih zuhause bin direkt testen.
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Lokale IP auslesen

  Alt 28. Jul 2009, 08:20
Wenn ich den o.g. Quellcode kompiliere, tritt an diesen Zeilen:

Delphi-Quellcode:
if gethostname(HostName, SizeOf(HostName)) = 0 then Begin
HostInfo:= gethostbyname(HostName);
Folgender Fehler auf:

[DCC Fehler] Umain.pas(218): E2010 Inkompatible Typen: 'Array' und 'PAnsiChar'
[DCC Fehler] Umain.pas(219): E2010 Inkompatible Typen: 'Array' und 'PAnsiChar'


und bei:

Lines.Add(StrPas(inet_ntoa(Addr^^)));
[DCC Warnung] Umain.pas(224): W1057 Implizite String-Umwandlung von 'AnsiString' zu 'string'

  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Lokale IP auslesen

  Alt 28. Jul 2009, 08:23
Larsi, dass die Funktion nicht von dir stammt, dürfte hier allen klar sein. Daher gib bitte zukünftig immer deine Copy&Paste-Quellen an!
In deinem Fall delphi-treff.de.

Edit: Huch der Beitrag von Larsi ist auch schon 1 Jahr alt. Naja, das gilt dennoch.
Edit 2: @Ajin: Bei mir (TurboDelphi) kompiliert der oben genannte Code von delphi-treff.de (s. meinen Link) ohne Warnungen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Lokale IP auslesen

  Alt 28. Jul 2009, 08:43
Ich kenne die Implementierung von D2009 nicht, aber hilft es, wenn Du die Variablendeklaration änderst?HostName: Array[0..255] of AnsiChar;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Lokale IP auslesen

  Alt 28. Jul 2009, 11:38
HostName: Array[0..255] of AnsiChar; Das Ändern der Variablendeklaration half
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz