Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Emails invalidos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Emails invalidos Responder citando

Este post es como consecuencia de este otro post:
https://cppbuilder.es/viewtopic.php?t=12435&highlight=regexpmatch


Esta función hace mas o menos lo mismo y es mas comprensible, pero lo mas importante es que no necesita de:
#include <memory>
#include <pcreposi>

ya que si se incluye en el fichero <memory>
el compilador no hace saltar los posibles Warnings (W8066 Unreachable code)

Esto es un problema porque el compilador no te avisa de estas incidencias que son muy importantes.
Código:

//Devuelve true si el email es > 7 y si contiene @ y un PUNTO y no contine caracteres especiales.
bool __fastcall TfV::EmailValido(String email)
{
    bool Result = false;
    if(email.Length() > 7)//xx@xx.es minimo 8 caracteres
    {
      if(email.Pos(L"@"))//Si existe una @
        {
           if(email.Pos(L"."))//Si existe un PUNTO
          {
                if(email[1] != '-' && email[email.Length()] != '-' && email[1] != '_' && email[email.Length()] != '_')
                {//el primer o ultimo caracter no puede ser un GUION INTERMECIO (-)(_)
                    String K = email;
                    bool encontrado = false;
                    unsigned short arroba = 0;
                    for(int i = 1; i <= K.Length(); i++)
                    {
                        if((K[i] < '0' || K[i] > '9') && (K[i] < 'A' || K[i] > 'Z') && (K[i] < 'a' || K[i] > 'z') && K[i] != '@' && K[i] != '.' && K[i] != '-' && K[i] != '_')
                        {
                            encontrado = true;//Encontrado un caracter especial no valido
                            break;
                        }
                        else
                            {
                                if(K[i] == '@')
                                    arroba++;
                            }
                    }

                    if(!encontrado && arroba == 1)//Posible email correcto
                        Result = true;
                }
                else
                   Result = false;
            }
            else
               Result = false;
        }
        else
            Result = false;
    }
    else
       Result = false;

    return Result;
}
//--------------------------------------------------------------------------

_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.


Ultima edición por JesúsGandia el Mie 14 May, 2014 10:27 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Estupenda función. Me gusta y la voy a usar. No obstante yo le pondría algún control más; por ejemplo: la arroba no puede estar detrás del último punto. No deben valer direcciones como angel.matilla@gamilcom. Tiene un punto y la arroba pero es una dirección que no puede existir.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.