IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

verification de syntaxe email


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut verification de syntaxe email
    salut ; j'ai utilisé ce code pour la verrification de la synthaxe d'une adresse email mais ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public
        { Déclarations publiques }
        Function ValiderChar(Caractere,Ligne:string):Boolean;
          var
          I :integer;
          begin
          Result:= false;
          for I := 0 to Length(Ligne) - 1 do
          if Ligne[I] = Caractere then Result := true;
        end;
     
      end;
    ensuite j'appele la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if not (ValiderChar('@',Edit4.Text)) and (ValiderChar('.',Edit4.Text)) then
    showmessage(Format('L''adresse de Courrielle " %s " est non Valide',[Edit4.Text] ));

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Function ValiderChar(Caractere:Char;Ligne:string):Boolean;
    Peut-être ce format ?

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut Buzz ; mais sa non fonctionne toujours pas

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    a noté que ce code je lé téléchargé mais je crois qu'il n'est pas aussi complet c'est a dire il ne compte pas combien de @ ni de '. '.

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @Salut,


    Pourquoi ne pas utiliser directement

    MatchesMask


  6. #6
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par redoran Voir le message
    a noté que ce code je lé téléchargé mais je crois qu'il n'est pas aussi complet c'est a dire il ne compte pas combien de @ ni de '. '.
    deux erreur dans ce code :
    1) "Caractere" doit être de type char et non string
    2) I doit aller de 1 à Length(Ligne)

    d'autre part "Pos(Caractere, Ligne)" permet de savoir si le caractère se trouve dans la chaine.

    et pour finir, le code n'est pas très efficace

    voici quelques emails valides pour lui
    @@@.@@@
    $êzfq@.
    .@
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Re

    Tu peux aussi le faire tout seul

    1) tu test le nbr de '@'
    2) tu vérifie à gauche de @ par le biais d'une liste de caractères autorisés
    3) tu vérifie à droite de @ par le biais d'une liste de caractères autorisés


    tu devrais t'en sortir facilement avec les fonctions Pos, Copy etc...

  8. #8
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    ok et merci pour cette lumière

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @RE

    Tiens je te propose cela. (Pas testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function ValidEMail(Mail: String): Boolean;
     
      function NbChar(const S : string; const CharACompter : char) : integer;
       var N : integer;
      begin
        result := 0;
        N      := Pos(CharACompter,S,1);
        while N <> 0 do begin
           inc(result);
           N := Pos(CharAcompter,S,N+1);
        end;
      end;
    Const
      ValidGauche= ['a'..'z','-']; // A toi de voir ce que tu autorise ou pas
      ValidDroite= ['a'..'z','-','.']; // A toi de voir ce que tu autorise ou pas
    Var
      PartieGauche, PartieDroite: String;
      i: integer;
    Begin
     result := False;
     if NbChar(EMail,'@') <> 1 then exit;
     
     PartieDroite := Copy(EMail,Pos('@')+1,Length(EMail)-1);
     if NbChar(PartieDroite,'.') <> 1 then exit; // On autorise qu'un seul '.' à droite
     for i = 1 to Length(EMail) do
       if not (Email[i] in ValidDroite) then exit;
     
     PartieGauche := Copy(EMail,1,Length(EMAIL)-Pos('@'));
     for i = 1 to Length(EMail) do
       if not (Email[i] in ValidGauche) then exit;
     
     result:=True; // C'est passé 
    end;
    A vérifier le récup de partie gauche et partie droite, à l'arrache j'ai pu faire une erreur.

    Mais là tu à un principe, après tu peux ajouter plein d'autre contrôle.



  10. #10
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    merci Buzz , je suis preneur
    je vais réglé un p'tit grand problème avec showmodal et je le teste
    merci encore une fois...

  11. #11
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384

  12. #12
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut ; @ buzz
    j'ai utilisé votre code mais sa marche pas :
    1. c'est la première fois que j'utilise ce type vérification
    2. j'ai pa su appelé la fonction lors de la validation


  13. #13
    ILP
    ILP est déconnecté
    Membre confirmé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 258
    Points : 610
    Points
    610
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    as-tu pensé à utiliser les expressions régulières pour valider ton email ?
    Pour ma part, j'utilise l'unité TRegExpr.
    Voici la fonction que j'ai écrite :
    Code Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // Vérifie que l'adresse e-mail est correcte
    function VerifEmail(Adresse: String): Boolean;
    const
      RegEmail = '[_a-zA-Z\d\-\.]+@([_a-zA-Z\d\-]+(\.[_a-zA-Z\d\-]+)+)';
    var
      RegExpr: TRegExpr;
    begin
      Result  := False;
      RegExpr := TRegExpr.Create();
      try
        RegExpr.Expression := RegEmail;
        Result := RegExpr.Exec(Adresse);
      finally
        RegExpr.Free();
      end;
    end;
    @+

  14. #14
    ILP
    ILP est déconnecté
    Membre confirmé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 258
    Points : 610
    Points
    610
    Par défaut
    Il me semble que le lien que je t'ai donné soit mort .

  15. #15
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Merci ILP ; j'ai enregistré l'unité dans mon projet et avec ctrl+F9 c'est impect.
    mais j'arrive a appelé cette fonction a partir d'un bouton

    mon code d'exécution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if not (VerifEmail(Edit1.Text)) then
    showmessage(Format('L''adresse de Courrielle " %s " est non Valide',[Edit1.Text] ));
    end;
    ca marche , mais les email de type : /ssss@aaa.com meme avec # , /, * est ce que c'est normal

    et aussi ssss,ddd@aaa.com

  16. #16
    ILP
    ILP est déconnecté
    Membre confirmé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 258
    Points : 610
    Points
    610
    Par défaut
    Normalement ,d'après la RFC 3696, ces adresses peuvent passer.
    Quoi que pour sss,ddd@aaa.com j'ai un doûte au niveau de la virgule .

  17. #17
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    merci pour votre disponibilité ;
    Quoi que pour sss,ddd@aaa.com j'ai un doûte au niveau de la virgule
    ca passe
    je me demande si c'est normale ou tous simplement un oubli....

  18. #18
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @Redoran,

    Bon j'ai corrigé ma proposition ci-dessus, cette fois je l'ai utiliser dans un projet.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function ValidEMail(EMail: String): Boolean;
      function NbChar(const S : string; const CharACompter : char) : integer;
       var N : integer;
      begin
        result := 0;
        N      := PosEx(CharACompter,S,1);
        while N <> 0 do begin
           inc(result);
           N := PosEx(CharAcompter,S,N+1);
        end;
      end;
    Const
      ValidGauche= ['a'..'z','-']; // A toi de voir ce que tu autorise ou pas
      ValidDroite= ['a'..'z','-','.']; // A toi de voir ce que tu autorise ou pas
    Var
      PartieGauche, PartieDroite: String;
      i: integer;
    Begin
     result := False;
     if NbChar(EMail,'@') <> 1 then exit;
     
     PartieDroite := Trim(Copy(EMail,Pos('@',EMAIL)+1,Length(EMail)-1));
     if NbChar(PartieDroite,'.') <> 1 then exit; // On autorise qu'un seul '.' à droite
     
     for i := 1 to Length(PartieDroite) do
       if not (PartieDroite[i] in ValidDroite) then exit;
     
     PartieGauche := Trim(Copy(EMail,1,Pos('@',EMAIL)-1));
     for i := 1 to Length(PartieGauche) do
       if not (PartieGauche[i] in ValidGauche) then exit;
     
     result:=True; // C'est passé
    end;
    N'oublis pas d'adapter les constantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const
      ValidGauche= ['a'..'z','-']; // A toi de voir ce que tu autorise ou pas
      ValidDroite= ['a'..'z','-','.']; // A toi de voir ce que tu autorise ou pas
    Là par exemple les chiffres ne sont pas autorisé, n'hésite pas à les ajoutés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const
      ValidGauche= ['0'..'9','a'..'z','-']; // A toi de voir ce que tu autorise ou pas
      ValidDroite= ['0'..'9','a'..'z','-','.']; // A toi de voir ce que tu autorise ou pas
    etc...

    Y'a plus cas...


  19. #19
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Merci Buzz pour ce partage , j'ai copié votre code bien sur avec un petit commentaire "Prpriétaire Buzz-developpez.com / forums " faut rendre a César ce qui lui appartiens.
    a la compilation "Ctrl+F9" j'ai ce message d'erreur :
    [Erreur] Unit1.pas(31): Identificateur non déclaré : 'PosEx'
    unit Unit1;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        BitBtn1: TBitBtn;
        procedure BitBtn1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    function ValidEMail(EMail: String): Boolean;
      function NbChar(const S : string; const CharACompter : char) : integer;
       var N : integer;
      begin
        result := 0;
        N      := PosEx(CharACompter,S,1);  // ici il génère message d'erreur 
        while N <> 0 do begin
           inc(result);
           N := PosEx(CharAcompter,S,N+1);
        end;
      end;
    Const
      ValidGauche= ['a'..'z','-']; // A toi de voir ce que tu autorise ou pas
      ValidDroite= ['a'..'z','-','.']; // A toi de voir ce que tu autorise ou pas
    Var
      PartieGauche, PartieDroite: String;
      i: integer;
    Begin
     result := False;
     if NbChar(EMail,'@') <> 1 then exit;
     
     PartieDroite := Trim(Copy(EMail,Pos('@',EMAIL)+1,Length(EMail)-1));
     if NbChar(PartieDroite,'.') <> 1 then exit; // On autorise qu'un seul '.' à droite
     
     for i := 1 to Length(PartieDroite) do
       if not (PartieDroite[i] in ValidDroite) then exit;
     
     PartieGauche := Trim(Copy(EMail,1,Pos('@',EMAIL)-1));
     for i := 1 to Length(PartieGauche) do
       if not (PartieGauche[i] in ValidGauche) then exit;
     
     result:=True; // C'est passé
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);// appel de la fonction 
    begin
    if not (VerifEmail(Edit1.Text)) then
    showmessage(Format('L''adresse de Courrielle " %s " est non Valide',[Edit1.Text] ));
    end;
     
    end.

  20. #20
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par redoran Voir le message
    a la compilation "Ctrl+F9" j'ai ce message d'erreur :
    Dans ce genre de cas un seul et unique réflexe: curseur sur PosEx et appui sur
    Résultat: StrUtils.

    @+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Verification formulaire adresse email
    Par spawns dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 17/02/2011, 11h29
  2. Verification syntaxe fonction javascript
    Par calitom dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 12/09/2006, 16h02
  3. [Mail] Verification email ..?!!
    Par ion dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2005, 16h19
  4. Verification d'une @email. Probleme
    Par Amandine62 dans le forum ASP
    Réponses: 3
    Dernier message: 21/01/2005, 11h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo