Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2019
BlackMore BlackMore is offline
Registrado
 
Registrado: abr 2019
Posts: 8
Poder: 0
BlackMore Va por buen camino
Validar email (funcion en PAS)

Código Delphi [-]
Unit validate_email;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

implementation

Function ValidEmail(email: String): Boolean;
  // Returns True if the email address is valid
  // Author: Ernesto D'Spirito
Const
  // Valid characters in an "atom"
  atom_chars = [#33..#255] - ['(', ')', '<', '>', '@', ',', ';', ':',
    '\', '/', '"', '.', '[', ']', #127];
  // Valid characters in a "quoted-string"
  quoted_string_chars = [#0..#255] - ['"', #13, '\'];
  // Valid characters in a subdomain
  letters = ['A'..'Z', 'a'..'z'];
  letters_digits = ['0'..'9', 'A'..'Z', 'a'..'z'];
  subdomain_chars = ['-', '0'..'9', 'A'..'Z', 'a'..'z'];
Type
  States = (STATE_BEGIN, STATE_ATOM, STATE_QTEXT, STATE_QCHAR,
    STATE_QUOTE, STATE_LOCAL_PERIOD, STATE_EXPECTING_SUBDOMAIN,
    STATE_SUBDOMAIN, STATE_HYPHEN);
Var
  State: States;
  i, n, subdomains: Integer;
  c: Char;
Begin
  State := STATE_BEGIN;
  n := Length(email);
  i := 1;
  subdomains := 1;
  While (i <= n) Do
  Begin
    c := email[i];
    Case State Of
      STATE_BEGIN:
        If c In atom_chars Then
          State := STATE_ATOM
        Else If c = '"' Then
          State := STATE_QTEXT
        Else
          break;
      STATE_ATOM:
        If c = '@' Then
          State := STATE_EXPECTING_SUBDOMAIN
        Else If c = '.' Then
          State := STATE_LOCAL_PERIOD
        Else If Not (c In atom_chars) Then
          break;
      STATE_QTEXT:
        If c = '\' Then
          State := STATE_QCHAR
        Else If c = '"' Then
          State := STATE_QUOTE
        Else If Not (c In quoted_string_chars) Then
          break;
      STATE_QCHAR:
        State := STATE_QTEXT;
      STATE_QUOTE:
        If c = '@' Then
          State := STATE_EXPECTING_SUBDOMAIN
        Else If c = '.' Then
          State := STATE_LOCAL_PERIOD
        Else
          break;
      STATE_LOCAL_PERIOD:
        If c In atom_chars Then
          State := STATE_ATOM
        Else If c = '"' Then
          State := STATE_QTEXT
        Else
          break;
      STATE_EXPECTING_SUBDOMAIN:
        If c In letters Then
          State := STATE_SUBDOMAIN
        Else
          break;
      STATE_SUBDOMAIN:
        If c = '.' Then
        Begin
          Inc(subdomains);
          State := STATE_EXPECTING_SUBDOMAIN;
        End
        Else If c = '-' Then
          State := STATE_HYPHEN
        Else If Not (c In letters_digits) Then
          break;
      STATE_HYPHEN:
        If c In letters_digits Then
          State := STATE_SUBDOMAIN
        Else If c <> '-' Then
          break;
    End;
    Inc(i);
  End;
  If i <= n Then
    Result := False
  Else
    Result := (State = STATE_SUBDOMAIN) And (subdomains >= 2);
End;
End.

hola....estoy intentando utilizar este archivo PAS en un proyecto C++ builder ya que la funcion esta en pascal (para validar email)


pero creo que me falta declarar la funcion en algun sitio porque me dice UNRESSOLVED EXTERNAL ValidEmail(System::UnicodeString)


alguien que pueda analizarlo??? compilar compila bien sin errores

Última edición por Casimiro Notevi fecha: 05-05-2019 a las 20:14:57.
Responder Con Cita
  #2  
Antiguo 06-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y tu código?
Responder Con Cita
  #3  
Antiguo 12-05-2019
BlackMore BlackMore is offline
Registrado
 
Registrado: abr 2019
Posts: 8
Poder: 0
BlackMore Va por buen camino
hola casimiro..... lo resolví de esta manera.....


Código:
#include "System.RegularExpressions.hpp"


//en el constructor del Form1 puse esto:


MemoRegEx->Text =
            "^((?>[a-zA-Z\d!#$%&''*+\\-/=?^_`{|}~]+\\x20*" "|\"((?=[\\x01-\\x7f])[^\"\\\\]|\\\\[\\x01-\\x7f])*\"\\"
            "x20*)*(?<angle><))?((?!\\.)(?>\.?[a-zA-Z\d!" "#$%&''*+\\-/=?^_`{|}~]+)+|\"\"((?=[\\x01-\\x7f])"
            "[^\"\\\\]|\\\\[\\x01-\\x7f])*\")@(((?!-)[a-zA-Z\\d\\" "-]+(?<!-)\\.)+[a-zA-Z]{2,}|\\[(((?(?<!\\[)\\.)"
            "(25[0-5]|2[0-4]\\d|[01]?\\d?\\d)){4}|[a-zA-Z\\" "d\\-]*[a-zA-Z\\d]:((?=[\\x01-\\x7f])[^\\\\\\[\\]]|"
            "\\\\[\\x01-\\x7f])+)\\])(?(angle)>)$";



// Incluí un TMemo con la cadena de comprobacion de email y un EditBox (Edit_DJ_EMAIL)
// y lo comprobe de esta manera....



if (TRegEx::IsMatch(Edit_DJ_EMAIL->Text.c_str(), MemoRegEx->Text))
     {
        ShowMessage("EMAIL VALID!!");
      }
    else
         {
           ShowMessage("Must enter a VALID EMAIL ADDRESS");
           return;
         }
Responder Con Cita
  #4  
Antiguo 12-05-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Una función para enviar Email en XE10 darkamerico Internet 9 12-04-2016 23:51:38
Funcion para validar campos. Jere_84 Varios 9 31-05-2012 23:10:46
Ayuda para validar un Dato de Tipo Boleano en funcion microbiano Varios 3 05-05-2012 09:16:39
Validar dirección de email dtomeysoto Varios 4 14-12-2005 17:23:09
Funcion para validar IP Mauricio Correa Internet 7 01-10-2003 16:04:25


La franja horaria es GMT +2. Ahora son las 10:23:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi