Nu har jeg lavet min egen valideringsfunktion på dansk, lidt ud fra den viste (på tysk) og lidt ud fra reglerne om e-mail adresser på nedenstående link (regular expression til java Script validering)
//
http://www.sitebilder.com/design/tutorial/mini/js/RegExp/email1.phpHer er så min version hvis der er nogen, der kunne have glæde af den. De fylder lidt mere, men så er der også en forklaring til brugeren af hvad der er galt.
function TForm1.KontrollerMail(Adresse : string): Boolean;
var
delTOMsnabelA, delEfterSnabelA, SidsteDel : String;
Laengde, i, SidstePunktumPos : integer;
begin
Result := True;
Laengde := Length(Adresse);
// Kontrol for ugyldige tegn
for i := 1 to Laengde do
begin
// Positionen af det sidste punktum skal gemmes til senere
if (CharAt(Adresse, i) = '.') then
SidstePunktumPos := i;
if not ErTegnTilladt(CharAt(Adresse, i)) then
begin
Result := False;
Showmessage('Ugyldigt tegn i adressen: "' + CharAt(Adresse, i) + '"');
Exit;
end;
end;
// der skal være @ i
if (Pos('@', Adresse) > 0) then
begin
delTOMsnabelA := Copy(Adresse, 1, Pos('@', Adresse));
delEfterSnabelA := Copy(Adresse, Pos('@', Adresse) + 1, Length(Adresse));
end
else
begin
Result := False;
Showmessage('Der skal være ét @ i adressen');
Exit;
end;
// der må ikke være mere end et @
if (Pos('@', delEfterSnabelA) > 0) then
begin
Result := False;
Showmessage('Der må kun være ét @ i adressen');
Exit;
end;
// Første del inkl. @ skal være mindst 2 tegn lang (det andet er @)
if (Length(delTOMsnabelA) < 2) then
begin
Result := False;
Showmessage('Adressen må ikke starte med @');
Exit;
end;
// Der skal være et punktum i delen efter @, og det må ikke være første tegn
if (Pos('.', delEfterSnabelA) < 2) then
begin
Result := False;
Showmessage('Intet punktum i delen efter @');
Exit;
end;
SidsteDel := Copy(Adresse, SidstePunktumPos + 1, Length(Adresse));
if ((Length(SidsteDel) < 2) or (Length(SidsteDel) > 4)) then
begin
Result := False;
Showmessage('Efter det sidste punktum skal der være mellem 2 og 4 tegn');
Exit;
end;
end;
function TForm1.ErTegnTilladt(Tegn : Char): Boolean;
begin
if Tegn in ['0'..'9', 'a'..'z', 'A'..'Z', '-', '@', '.'] then
result := True
else
result := False;
end;
function TForm1.CharAt(var S: string; APos: Integer): Char;
begin
Result := #0;
if (Length(s) < APos) or (apos < 1) then Exit;
Result := s[APos];
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if KontrollerMail(Edit1.Text) then
Showmessage('Adresse OK')
else
Showmessage('Adresse IKKE OK');
end;