Czy dany numer IP jest poprawny (w formacie XXX.XXX.XXX.XXX)

AndRew

Funkcja sprawdzająca czy IP jest poprawnie wpisany (tzn : 4 bloki liczb w zakresie 0 - 255 rozdzielone kropkami)

function IsValidIP(const IP: String) : boolean;
var I, J : Byte;
    ValidPart : array [0..3] of Boolean;
    Part: String;
begin
  I := 0;
  for J := 0 to 3 do
    begin
      Part := '';

      repeat
        Inc(I);
        Part := Part + IP[I];
      until (IP[i] = '.') or (i = length(IP));

      if Part[Length(Part)] = '.' then Part := Copy(Part, 0, Length(Part) - 1);
      ValidPart[J] := (StrToInt(Part) <= 255) and(StrToInt(Part) >= 0);
    end;
  Result := ValidPart[0] and ValidPart[1] and ValidPart[2] and ValidPart[3];
end;

4 komentarzy

Ja tam wolę użyć zawsze RegExp (...) Szybciej, sprawniej i pewniej

Que? Szybciej? [rotfl] :D

Ja tam wolę użyć zawsze RegExp :]
http://www.regular-expressions.info/regexbuddy/ipaccurate.html
Szybciej, sprawniej i pewniej ;)

albo dziecymalnie, co czaaasami sie zdarza... :)

moje IP 212.33.82.196 decymalnie - 3558953668.

BTW. w pakiecie INDY jest komponent NetCalc czy jakos tak

oblicza IP, maski podsieci, klasy, fajna zabawka

Hmm. A jeżeli jest zapisane w postaci liczby szesnastkowej?