Comment vérifier si «@» est présent dans une chaîne [duplicate]

Aug 22 2020

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

3 AndreasRejbrand Aug 21 2020 at 23:26

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.

2 Charlie Aug 21 2020 at 23:31

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