FAQ » Sieć

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

  • 2012-03-02 18:50
  • 4 komentarze
  • 820 odsłon
  • Oceń ten tekst jako pierwszy
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 komentarze

wotek 2005-07-10 17:09

<quote>Ja tam wolę użyć zawsze RegExp (...) Szybciej, sprawniej i pewniej </quote>
Que? Szybciej? [rotfl] :D

Marooned 2005-05-06 14:55

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

lofix 2003-09-22 09:42

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

Dryobates 2003-09-22 09:30

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