Comment vérifier si «@» est présent dans une chaîne [duplicate]
J'ai essayé d'utiliser une instruction If, mais elle n'affiche le message que si je ne mets @ que dans l'édition
var
sname , email : string ;
iAge , igrade : integer ;
iVal : string;
begin
ival := '@';
email := (edtEmail.Text);
if ival = email then
begin
Showmessage(' Email Address must contain @ ');
end;
Réponses
En effet, la condition ival = emailest true iff ival et emailsont des chaînes identiques. Depuis ivalest @, la condition est vraie ssi emailest exactement @.
Vous voulez vérifier si @se trouve à l'intérieur email. Pour ce faire, vous pouvez utiliser la Posfonction, qui renvoie l'index basé sur 1 du premier caractère de la première occurrence d'une sous-chaîne dans une chaîne, ou si 0la sous-chaîne n'est pas trouvée dans la chaîne:
if Pos('@', email) = 0 then
ShowMessage('The email address must contain @.');
Notez qu'il n'est vraiment pas nécessaire qu'une variable contienne le caractère at.
Dans les versions modernes de Delphi, il est préférable d'écrire
if not email.Contains('@') then
ShowMessage('The email address must contain @.');
en utilisant TStringHelper.Contains, car c'est plus facile à lire.
Vous pouvez utiliser la fonction Pos pour vérifier si le caractère @ peut être localisé dans la chaîne de courrier électronique.
if Pos('@', email) = 0 then
begin
Showmessage(' Email Address must contain @ ');
end;
Voici un article sur la validation des adresses e-mail dans Delphi
https://www.howtodothings.com/computers/a1169-validating-email-addresses-in-delphi.html