Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#10

AW: String auf Zeichen prüfen

  Alt 26. Jan 2018, 13:58
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.

Geändert von Delphi.Narium (26. Jan 2018 um 14:21 Uhr) Grund: einen Syntaxfehler behoben
  Mit Zitat antworten Zitat