Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi korrekte IPs eingegeben? (https://www.delphipraxis.net/6061-korrekte-ips-eingegeben.html)

Mat 28. Jun 2003 05:09


korrekte IPs eingegeben?
 
nachdem ich nun mitbekommen hatte, das man der Eigenschaft BoundIP des Indy-TCPClients nur IPs eingeben kann, hatte ich ein Problem:

Ich habe ein Edit-Feld, dessen Inhalt aber auch (eigentlich logisch) Nicht-IP-Adressen haben kann.

Daher habe ich diese FUnktion geschrieben, die eben prueft, ob es sich um eine korrekte IP handelt..

Delphi-Quellcode:
function isIP(IP: string): boolean;
var
  i, lastdot, amount, part: integer;
begin
  // this function checks, whether a IP is a valid one

  IP := '.' + IP;
  lastdot := Length(IP) + 1;
  amount := 0;
  result := True;

  for i := (Length(IP) + 1) downto 1 do
  begin
    if IP[i] = '.' then
    begin
      try
        part := StrToInt(Copy(IP, i + 1, lastdot - i - 1));
        lastdot := i;
        Inc(amount);
        // each part of the IP must be between 0 and 254
        if (part < 0) or (part > 254) then result := False;
      except
        Result := False;
      end;
    end;
  end;

  //each IP has to contain 4 parts
  if amount <> 4 then result := False;

end;

Aufrufen z.B. durch:
Delphi-Quellcode:
 if not IsIP('thor') then showmessage('Keine IP')

Zwei Anmerkungen noch:
1. der except Abschnitt kann eigentlich auch leer gelassen werden, da z.B. bei '192.abc.169.85' amount nur 3 waere, sieht aber im Code irgendwie doof aus.. :)

2. ich hoffe, das kann waer gebrauchen ;)


Mat

Luckie 28. Jun 2003 07:12

Ich kenne was besseres: Hier findest du einen VCL-Portscanner der ein IP-Adress-Eingabefeld hat.
http://www.luckie-online.de/files/myoldstuff/

Mat 28. Jun 2003 15:24

das ist natuerlich auch ne variante... wenn man aber in ein Edit-Feld wahlweise Hostnamen oder IPs schreiben kann, dann ist die Funktion nuetzlich.... fuer mich jedenfalls ... :)




Mat


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 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