AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ip auf gültigkeit prüfen
Thema durchsuchen
Ansicht
Themen-Optionen

ip auf gültigkeit prüfen

Ein Thema von BBoy · begonnen am 13. Nov 2009 · letzter Beitrag vom 13. Nov 2009
Antwort Antwort
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:02
Hallo,
ich suche eine Möglichkeit um eine in ein textfeld eingegebe IP auf gültigkeit zu prüfen, also ob die schreibweise korrekt ist.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:05
Per RegExkomponente (z.B. vom LMD/ElPack) und der passenden Expression
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#3

Re: ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:13
es gibt doch auch von den indys eine Komponente die als IP-Maske dient

JvIpAdress

Viel Spaß damit
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:13
Delphi-Quellcode:
uses Winsock;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if inet_addr(PChar(edit1.Text))=INAddr_None then
    raise Exception.CreateFMT('%s ist keine gültige IP-Adresse',[edit1.text]);
end;
Edit:
"255.255.255.255" müsste man bei dieser Version noch extra überprüfen.
Beachte das auch "4" oder "4.6" eine gültige Adresse ist.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:26
Zitat von stho:
es gibt doch auch von den indys eine Komponente die als IP-Maske dient

JvIpAdress

Viel Spaß damit
Indy's da fangen die Klassen doch alle mit Id... an
Jv... ist doch wohl eher Jedi's Work
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
uoeb7gp
(Gast)

n/a Beiträge
 
#6

Re: ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:32
Hi, hab für Produktiv Systeme seit Jahren folgendes in Verwendung:

Delphi-Quellcode:
function TMainClass.CheckIPEx(s: string): Boolean;
var
  s1, s2, s3, s4: String;
  e, v, i, j, sum: Integer;
  bcLen: integer;
  ix: array[1..3] of integer;
begin
  result := false;

  if (s = '0.0.0.0') then EXIT;

  j := 0;
  bcLen := Length(s);
  for i:= 1 to bcLen do begin
      if s[i] = '.then begin
         inc(j);
         ix[j] := i;
      end;
  end;
  if j <> 3 then EXIT;

  s1 := copy(s, 1, ix[1] - 1);
  s2 := copy(s, ix[1] + 1, ix[2] - ix[1] - 1);
  s3 := copy(s, ix[2] + 1, ix[3] - ix[2] - 1);
  s4 := copy(s, ix[3] + 1, bcLen);

  sum := 0;

  Val(s1, v, e);
  if (e <> 0) or (v > 255) or (v < 0) or ((Length(s1) > 1) and (s1[1] = '0')) then EXIT;
  sum := sum + v;

  Val(s2, v, e);
  if (e <> 0) or (v > 255) or (v < 0) or ((Length(s2) > 1) and (s2[1] = '0')) then EXIT;
  sum := sum + v;


  Val(s3, v, e);
  if (e <> 0) or (v > 255) or (v < 0) or ((Length(s3) > 1) and (s3[1] = '0')) then EXIT;
  sum := sum + v;


  Val(s4, v, e);
  if (e <> 0) or (v > 255) or (v < 0) or ((Length(s4) > 1) and (s4[1] = '0')) then EXIT;
  sum := sum + v;

  if sum <> 0 then
    result := true;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:38
Oder ausführlich:
Delphi-Quellcode:
function isIP(const IP:AnsiString):boolean;
var RtlIpv4StringToAddress:function(s:PAnsiChar; //IP-Adresse
                                    Strict:Boolean; //zwingend 4 Teile durch Punkte getrennte Addresse
                                    out Terminator:PAnsiChar;
                                    out Addr:In_Addr):LongWord;stdcall;
var Terminator:PAnsiChar;
    Addr:In_Addr;
begin
  RtlIpv4StringToAddress:=GetProcAddress(GetModuleHandle('NTDll.DLL'),
                                         'RtlIpv4StringToAddressA');
  if assigned(RtlIpv4StringToAddress) then //sollte auf allen neueren WinVersionen verfügbar sein
    result:=RtlIpv4StringToAddress(PAnsiChar(IP),true,Terminator,Addr)
           =NO_ERROR
  else //falls das Windows zu alt ist
    result:=(inet_addr(PAnsiChar(IP))<>INAddr_None)
          or(IP='255.255.255.255');
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#8

Re: ip auf gültigkeit prüfen

  Alt 13. Nov 2009, 12:56
Super, danke für die vielen Antworten.
  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 08:18 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