cs_Jos
Messages postés128Date d'inscriptionmardi 26 juin 2001StatutMembreDernière intervention 8 février 2005
-
27 mars 2002 à 22:29
hoby500
Messages postés86Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention26 mai 2019
-
27 sept. 2010 à 10:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
hoby500
Messages postés86Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention26 mai 2019 27 sept. 2010 à 10:20
Dites les gars.
au lieu de copy(TmpS,a,1) vous faites mieux d'utiliser TmpS[a]
Puis, au lieu de :
for a:=1 to length(TmpS) do
begin
if pos(copy(TmpS,a,1),accept) < 0 then Result := False
end;
je propose :
Email_Bon := True; // j'assume que c'est bon
for a:=1 to length(TmpS) do
if pos(TmpS[a],accept) = 0 then
begin
Email_Bon := False; // je suis sûr que c'est pas bon
Break // je quitte la boucle
end;
// Pour vérifier la présence du point au delà du @ :
if Email_Bon then
begin
s:=Email; Delete(s, 1, pos('@', s));
if pos('.', s)=0 then Email_Bon := false
end
bloodfox
Messages postés1Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention22 mai 2006 22 mai 2006 à 16:59
Je me suis permis d'adapter un peu ce code
//Test des caractères non acceptés
for a:=1 to length(TmpS) do
begin
if pos(copy(TmpS,a,1),accept) < 0 then
Result := False
end;
//Test du nombre de @
b:=0;
for a:=1 to length(TmpS) do //pour tous les caractères
if copy(TmpS,a,1) = '@' then b:=b+1; //si il trouve @ il ajoute 1
if b <> 1 then
Result := False;
//Test . ou @ qui se suivent
for a:=1 to length(TmpS) do //pour tous les caractères
if ( (copy(TmpS,a,1) '@') or (copy(TmpS,a,1) '.') ) and
((copy(TmpS,a+1,1) '@') or (copy(TmpS,a+1,1) '.')) then
Result := False;
//Test . ou @ en premier ou dernier caractere
if (copy(TmpS,1,1) '@') or (copy(TmpS,1,1) '.') or
(copy(TmpS,length(TmpS),1) '@') or (copy(TmpS,length(TmpS),1) '.') then
Result := False;
//Test présence d'un . après le @
if pos('.',copy(TmpS,pos('@',TmpS)+1,length(TmpS)-pos('@',TmpS)-1)) = 0 then
Result := false;
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 25 nov. 2003 à 23:16
Ah oui, s'il n'y a pas un '.' quelque part dans l'email c'est pas bon. Seulement ca ne dit pas OU dans l'email.
Or, pour ne pas avoir d'erreur il faut vérifier qu'il y ait un '.' APRES le @.
fabiin
Messages postés329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 20096 25 nov. 2003 à 20:09
ca le fai normalement
regarde a la fin du source :
if pos('.',TmpS) = 0 then Result := false; //si ya 0 '.' dans l'email c pas bon
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 25 nov. 2003 à 17:54
Y a un email qui m'a fait planter mon système de newsletter :
nom.prenom@libertysurf
Et oui, mon ptit gars, il y a bien un . et un @ maisle problème est qu'il n'y a pas de . après le nom du provider... Et ca le serveur aime pas.
Donc suggestion : Il faudrait que ta source vérifie s'il y a bien ce fameux point.
cs_Jos
Messages postés128Date d'inscriptionmardi 26 juin 2001StatutMembreDernière intervention 8 février 2005 28 mars 2002 à 23:35
Voici un lien intéressant, à propos des expressions régulières.
cs_Jos
Messages postés128Date d'inscriptionmardi 26 juin 2001StatutMembreDernière intervention 8 février 2005 27 mars 2002 à 22:29
N'y a-t-il pas de la gestion d'expressions régulières, en Delphi, qui pourrait facilité une telle validation???
Comme RegExp enVBScrip et JSScrip ou =~ en Perl???
27 sept. 2010 à 10:20
au lieu de copy(TmpS,a,1) vous faites mieux d'utiliser TmpS[a]
Puis, au lieu de :
for a:=1 to length(TmpS) do
begin
if pos(copy(TmpS,a,1),accept) < 0 then Result := False
end;
je propose :
Email_Bon := True; // j'assume que c'est bon
for a:=1 to length(TmpS) do
if pos(TmpS[a],accept) = 0 then
begin
Email_Bon := False; // je suis sûr que c'est pas bon
Break // je quitte la boucle
end;
// Pour vérifier la présence du point au delà du @ :
if Email_Bon then
begin
s:=Email; Delete(s, 1, pos('@', s));
if pos('.', s)=0 then Email_Bon := false
end
22 mai 2006 à 16:59
//Test des caractères non acceptés
for a:=1 to length(TmpS) do
begin
if pos(copy(TmpS,a,1),accept) < 0 then
Result := False
end;
//Test du nombre de @
b:=0;
for a:=1 to length(TmpS) do //pour tous les caractères
if copy(TmpS,a,1) = '@' then b:=b+1; //si il trouve @ il ajoute 1
if b <> 1 then
Result := False;
//Test . ou @ qui se suivent
for a:=1 to length(TmpS) do //pour tous les caractères
if ( (copy(TmpS,a,1) '@') or (copy(TmpS,a,1) '.') ) and
((copy(TmpS,a+1,1) '@') or (copy(TmpS,a+1,1) '.')) then
Result := False;
//Test . ou @ en premier ou dernier caractere
if (copy(TmpS,1,1) '@') or (copy(TmpS,1,1) '.') or
(copy(TmpS,length(TmpS),1) '@') or (copy(TmpS,length(TmpS),1) '.') then
Result := False;
//Test présence d'un . après le @
if pos('.',copy(TmpS,pos('@',TmpS)+1,length(TmpS)-pos('@',TmpS)-1)) = 0 then
Result := false;
25 nov. 2003 à 23:16
Or, pour ne pas avoir d'erreur il faut vérifier qu'il y ait un '.' APRES le @.
25 nov. 2003 à 20:09
regarde a la fin du source :
if pos('.',TmpS) = 0 then Result := false; //si ya 0 '.' dans l'email c pas bon
25 nov. 2003 à 17:54
nom.prenom@libertysurf
Et oui, mon ptit gars, il y a bien un . et un @ maisle problème est qu'il n'y a pas de . après le nom du provider... Et ca le serveur aime pas.
Donc suggestion : Il faudrait que ta source vérifie s'il y a bien ce fameux point.
28 mars 2002 à 23:35
27 mars 2002 à 22:29
Comme RegExp enVBScrip et JSScrip ou =~ en Perl???