Ein email-Adress-Validator ist schon gut, aber wenn der auch noch nach Spam etc. schauen soll, dann macht der schon zuviel. Das muss man mehrstufig machen.
Delphi-Quellcode:
TEmailAddress =
record
private
FValue :
string;
public
// prüft den String mit IsValid und erzeugt den Record
// bei IsValid = false wird eine Exception geworfen
constructor Create(
const AEmailAddressStr :
string );
class operator implicit (
const s :
string ) : TEmailAddress;
class operator implicit (
const e : TEmailAddress ) :
string;
class function IsValid(
const AStr :
string ): Boolean;
function ToString :
string;
// weitere Operatoren wie Equal oder Methoden wie IsEmpty
end;
und der SpamFilter dann
Delphi-Quellcode:
function IsSpamEmail( const AEmailAddress : TEmailAddress ) : Boolean;
begin
// hier Prüfung auf Spam-Domains
end;
Die Funktion kann jetzt aufgerufen werden mit
IsSpamEmail( 'foo@bar.com' )
und der String wird in den Record umgewandelt und dabei gleichzeitig überprüft. Wenn das keine korrekte email-Adresse ist, dann wirft die Record-Umwandlung eine
Exception. Darum kann ich mich in der Funktion darauf verlassen, dass ich nur korrekte Email-Adressen bekomme
Damit es nicht zu
OT wird, das funktioniert natürlich auch für Datum, Zeit, etc.