Email di convalida di base all'interno di script di Inno Setup
-
18-09-2019 - |
Domanda
Sono voler fare una convalida stringa di base all'interno di uno script di Inno Setup per essere relativamente certa la stringa è un indirizzo email. Voglio solo vedere che c'è un carattere '@' seguito da un '' carattere e che ci sia almeno un carattere su entrambi i lati di questi. Qualcosa di simile a questa espressione regolare:
[^@]+@.+\.[^\.]
La mancanza di espressioni regolari e funzioni di stringa limitate disponibili in Object Pascal mi stanno causando dolore. Sarebbe abbastanza semplice per invertire la stringa, trovare il primo '' e '@' e poi fare qualche confronto, ma non c'è alcuna funzione inversa (string) a disposizione.
So che posso chiamare una funzione esportata da una DLL di supporto che scrivo, ma speravo di evitare questa soluzione.
Altri suggerimenti?
Soluzione
Un ottimo domanda! Mi permetto di suggerire una risposta ...
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;
Questa funzione restituisce true se non ci sono spazi nella indirizzo di posta elettronica, ha un '@' seguito da un ' ' e non v'è almeno un carattere su entrambi i lati della '@' e'.'. Abbastanza vicino per il lavoro del governo.