email preenchido corretamenta
Boa noite gente estou querendo validar um campo de email que tenha o caracter @ caso nao possua esse caracter no campo entro com uma mensagem de email invalido. uma coisa bem simples.
tentei usar o midstr mas pelo que percebi ele nao deixa eu usar a condicao If alguem tem uma outra forma ou a mesa derrepente estou fazendo algo errado e nao estou percebendo.
vlw gente.
abraco.
tentei usar o midstr mas pelo que percebi ele nao deixa eu usar a condicao If alguem tem uma outra forma ou a mesa derrepente estou fazendo algo errado e nao estou percebendo.
vlw gente.
abraco.
Ciotti
Curtidas 0
Respostas
Wanderok
29/03/2008
Function ValidaEMail(const EMailIn: PChar):Boolean;
const
CaraEsp: array[1..40] of string[1] =
( ´!´,´#´,´$´,´¬´,´¨´,´&´,´*´,
´(´,´)´,´+´,´=´,´?´,´¬´,´¢´,´¹´,´²´,
´³´,´&´,´´´,´´´,´ç´,´Ç´,´,´,´;´,´:´,
´<´,´>´,´~´,´^´,´?´,´/´,´\´,´|´,´[´,´]´,´{´,´}´,
´º´,´ª´,´°´);
var
i,cont : integer;
EMail : ShortString;
begin
EMail := EMailIn;
Result := True;
cont := 0;
if EMail <> ´´ then
if (Pos(´@´, EMail)<>0) and (Pos(´.´, EMail)<>0) then // existe @ .
begin
if (Pos(´@´, EMail)=1) or (Pos(´@´, EMail)= Length(EMail)) or (Pos(´.´, EMail)=1) or (Pos(´.´, EMail)= Length(EMail)) or (Pos(´ ´, EMail)<>0) then
Result := False
else // @ seguido de . e vice-versa
if (abs(Pos(´@´, EMail) - Pos(´.´, EMail)) = 1) then
Result := False
else
begin
for i := 1 to 40 do // se existe Caracter Especial
if Pos(CaraEsp[i], EMail)<>0 then
Result := False;
for i := 1 to length(EMail) do
begin // se existe apenas 1 @
if EMail[i] = ´@´ then
cont := cont + 1; // . seguidos de .
if (EMail[i] = ´.´) and (EMail[i+1] = ´.´) then
Result := false;
end;
// . no f, 2ou+ @, . no i, - no i, _ no i
if (cont >=2) or ( EMail[length(EMail)]= ´.´ )
or ( EMail[1]= ´.´ ) or ( EMail[1]= ´_´ )
or ( EMail[1]= ´-´ ) then
Result := false;
// @ seguido de COM e vice-versa
if (abs(Pos(´@´, EMail) - Pos(´com´, EMail)) = 1) then
Result := False;
// @ seguido de - e vice-versa
if (abs(Pos(´@´, EMail) - Pos(´-´, EMail)) = 1) then
Result := False;
// @ seguido de _ e vice-versa
if (abs(Pos(´@´, EMail) - Pos(´_´, EMail)) = 1) then
Result := False;
end;
end
else
Result := False;
end;
GOSTEI 0
Wanderok
29/03/2008
Ué ???????????????????????
CODE não funcionou nao !!! :D:D:D
É isto !
CODE não funcionou nao !!! :D:D:D
É isto !
GOSTEI 0
Ciotti
29/03/2008
ola amigo nao seria mais facil usar midstr usei dessa forma
mas nao funcionou
if midstr(text1.text,1,50)<>´@´then begin
showmessage(´Email invalido´)
end
cara nao funcionou ,nao sei pq .
vou ver seu codigo
vlw
se tiver outro exemplo é so mandar
mas nao funcionou
if midstr(text1.text,1,50)<>´@´then begin
showmessage(´Email invalido´)
end
cara nao funcionou ,nao sei pq .
vou ver seu codigo
vlw
se tiver outro exemplo é so mandar
GOSTEI 0
Wanderok
29/03/2008
midstr(text1.text,1,50)<>´@´
cara nao funcionou ,nao sei pq .
TesteA := MidStr(´ForumWeb´, 3, 6); // TesteA = ´rumWeb´;
TesteB := MidStr(´ForumWeb´, 6, 3); // TesteB = ´Web´;
TesteC := Copy(´ForumWeb´, 6, 3); // TesteC = ´Web´ também.
LOGO,
showmessage(midstr([b:579edfc84f]´wanderok@msn.com[/b:579edfc84f]´,1,50)) = ´[color=red:579edfc84f][b:579edfc84f]wanderok@msn.com´[/b:579edfc84f][/color:579edfc84f]
Sacou ???
GOSTEI 0
Wanderok
29/03/2008
Além do mais....
o fato de ter @ nao implica necessariamente em ser um email correto.
exemplos:
@
@@@
teste@
teste@@
@teste
@teste.....com
@testeponto
Todo exemplos de literais que possuem o caracter @ e q nao sao emails válidos.
É isto.
o fato de ter @ nao implica necessariamente em ser um email correto.
exemplos:
@
@@@
teste@
teste@@
@teste
@teste.....com
@testeponto
Todo exemplos de literais que possuem o caracter @ e q nao sao emails válidos.
É isto.
GOSTEI 0
Ciotti
29/03/2008
opa amigo vlw pelas dicas mas estou fazendo de uma forma meia grosseira de validar email, estou a um bom tempo sem programar em delphi , programos bem em vb, minha dificuldade foi de fazer essa sua funcao pois acusava um erro e nao consegui manipular.
mas desde ja fico hiper grato pela sua dica
forte abraco.
mas desde ja fico hiper grato pela sua dica
forte abraco.
GOSTEI 0
Wanderok
29/03/2008
solucinado !!!! :D:D:D
GOSTEI 0
Wanderok
29/03/2008
solucinado !!!! :D:D:D
[size=24:9e69654ce8][color=red:9e69654ce8][b:9e69654ce8]EDITANDO DE FORMA ´INTELIGENTE´ !!![/b:9e69654ce8][/color:9e69654ce8][/size:9e69654ce8]
SO-LU-CI-O-NA-DO.... :D:D:D
GOSTEI 0
Ciotti
29/03/2008
ola amigo fiz sua funcao funciou certinho nao deu nenhum erro decompimplacao , so gostaria de saber como manipular agora no edit.
fiz dessa forma mas nao sei como inserir no edit:
procedure TForm1.Edit1Change(Sender: TObject);
begin
ValidaEMail()
end;
end.
dentro do Validaemail nao sei como manipular.
valew
fiz dessa forma mas nao sei como inserir no edit:
procedure TForm1.Edit1Change(Sender: TObject);
begin
ValidaEMail()
end;
end.
dentro do Validaemail nao sei como manipular.
valew
GOSTEI 0
Ciotti
29/03/2008
Ola amigo consegui fazer mas nao é 100¬ mas quebra um galhao forte abraco Fica com Deus.
GOSTEI 0
Wanderok
29/03/2008
procedure TForm1.Edit1Change(Sender: TObject);
begin
IF NOT ValidaEMail(EDIT1.TEXT) THEN
BEGIN
SHOWMESSAGE(´EMAIL INVALIDO !!!´);
EDIT1.SETFOCUS;
EXIT;
END;
end;
GOSTEI 0