Thema: Delphi korrekte IPs eingegeben?

Einzelnen Beitrag anzeigen

Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#1

korrekte IPs eingegeben?

  Alt 28. Jun 2003, 05:09
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:
 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
  Mit Zitat antworten Zitat