Validation d'une adresse ip

Contenu du snippet

Voici une sous-routine qui permet de valider une chaîne de caractère. Si celle-ci représente une adresse IP (allant de 0.0.0.0 à 255.255.255.255), la routine retourne TRUE. Si la string ne correspond pas à une adresse IP, la routine retourne FALSE.

Source / Exemple :


Function ValidIP( aIP : String ) : Boolean;
{ Détermine si la string passée en paramètre est une adresse IP }
var
  iNb,
  iVal   : Integer;
  bOK    : Boolean;
  sTmp,
  sTmpIP : String;
begin
  bOK := True;

  iNb := 0;
  sTmpIP := aIP;
  Repeat
    if Pos( '.', sTmpIP ) > 0 then
    begin
      { Récupération du premier nombre de la chaine sTmpIP }
      sTmp := Copy( sTmpIP, 1, Pos( '.', sTmpIP ) - 1 );
      { On enlève le nombre qui vient d'être lu par sTmp }
      sTmpIP := Copy( sTmpIP, Pos( '.', sTmpIP ) + 1, Length( sTmpIP ) );
    end
    else
    begin
      sTmp := sTmpIP; { Récupération du nombre restant dans la chaine sTmpIP }
      sTmpIP := ''; { Il n'y a plus rien à lire }
    end;

    { Vérification s'il s'agit d'un nombre }
    Try
      iVal := StrToInt( sTmp );
      if (iVal > 255) or (iVal < 0) then { Si le nombre > 255 ou < 0, ce n'est pas une adresse IP }
        bOk := False
      else
        inc( iNb ); { Maintenir le compte de chiffres dans la chaine }
    except
      { Si on arrive à cette erreur, il ne s'agit pas d'un nombre }
      On E : EConvertError do bOK := False; 
    end;
  { Boucler jusqu'à ce qu'on passe au travers de la chaine ou qu'il y ait une erreur }
  until ( sTmpIP = '' ) or not bOK;

  { S'il n'y a pas 4 nombres, ce n'est pas une adresse IP }
  if iNb <> 4 then bOK := False;

  Result := bOK;
end;

Conclusion :


Merci à tous ceux qui m'ont rapporté ou qui vont me rapporter des bugs!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (garnotte)