Naja, wenn ich sowohl eine Ziffer, als auch einen Kleinbuchstaben, sowie einen Großbuchstaben haben möchte, muss ich auch auf die Länge der Eingabe prüfen. Die muss also mindestens 3 sein.
Und diese Aussage dürfte kaum stimmen:
Zitat von
Redeemer:
Deddys Algorithmus funktioniert nicht, denn ValidPW('0') ergibt doch true.
Result ist nur dann True, wenn diese Bedingung erfüllt ist:
ContainsUpper and ContainsLower and ContainsNumber
Das dürfte bei einem Zeichen kaum hinzubekommen sein.
Zumindest mein Delphi weigert sich da
Man könnte DeddyHs Vorschlag ja so abwandeln:
Delphi-Quellcode:
function ValidPW(const s: string; MinLower, MinUpper, MinNumber : Integer): Boolean;
var
ContainsUpper: Integer;
ContainsLower: Integer;
ContainsNumber: Integer;
c: char;
begin
ContainsUpper := 0;
ContainsLower := 0;
ContainsNumber := 0;
Result := false;
for c in s do
begin
if CharInSet(c, ['0'..'9']) then Inc(ContainsNumber)
else if c = AnsiUpperCase(c) then Inc(ContainsUpper)
else if c = AnsiLowerCase(c) then Inc(ContainsLower);
Result := (ContainsUpper >= MinUpper) and (ContainsLower >= MinLower) and (ContainsNumber >= MinNumber);
if Result then
break;
end;
end;
// Aufruf:
Case ValidPW(ed_Passwort.Text,4,4,1) of
true : ShowMessage('Passwort genügt den Anforderungen');
False : ShowMessage('Passwort genügt nicht den Anforderungen');
end;
Dann brauche ich halt mindestens 4 Kleinbuchstaben, mindestens 4 Großbuchstaben und eine Ziffer.
'ne Erweiterung um Sonderzeichen dürfte da dann auch kein großes Problem mehr sein.