Pregunta

Estoy con ganas de hacer una validación básica cadena dentro de una secuencia de comandos de configuración Inno a estar relativamente seguros de la cadena es una dirección de correo electrónico. Sólo quiero ver que hay un carácter '@' seguido de un '' carácter y de que hay al menos un carácter a cada lado de estos. Algo similar a esta expresión regular:

[^@]+@.+\.[^\.]

La falta de expresiones regulares y funciones de cadena limitados disponibles en Object Pascal me están causando dolor. Sería lo suficientemente simple como para revertir la cadena, encontrar el primer ''. y '@' y luego hacer algunas comparaciones, pero no hay ninguna función de inversión (cadena) disponibles.

Sé que puedo llamar a una función exportada desde una DLL auxiliar que escribo, pero yo estaba esperando para evitar esta solución.

¿Alguna otra sugerencia?

¿Fue útil?

Solución

Una excelente pregunta! Permítanme sugerir una respuesta ...

function ValidateEmail(strEmail : String) : boolean;
var
    strTemp  : String;
    nSpace   : Integer;
    nAt      : Integer;
    nDot     : Integer;
begin
    strEmail := Trim(strEmail);
    nSpace := Pos(' ', strEmail);
    nAt := Pos('@', strEmail);
    strTemp := Copy(strEmail, nAt + 1, Length(strEmail) - nAt + 1);
    nDot := Pos('.', strTemp) + nAt;
    Result := ((nSpace = 0) and (1 < nAt) and (nAt + 1 < nDot) and (nDot < Length(strEmail)));
end;

Esta función devuelve verdadero si no hay espacios en la dirección de correo electrónico, tiene una '@' seguido de un ' ' y hay al menos un carácter a ambos lados de la '@' y'.'. Lo suficientemente cerca para el trabajo del gobierno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top