Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TPasswordCheck (Komponente mit Anbindung an ein TEdit) (https://www.delphipraxis.net/154704-tpasswordcheck-komponente-mit-anbindung-ein-tedit.html)

Satty67 21. Sep 2010 18:35


TPasswordCheck (Komponente mit Anbindung an ein TEdit)
 
Liste der Anhänge anzeigen (Anzahl: 3)
Wie angedroht hier nun die Komponente zu meiner letztlich kreierten Passwort-Prüfmethode.

Komponente TPasswordCheck

Kurzbeschreibung:

TPasswordCheck wird wie ein TUpDown an ein TEdit gebunden. Eingaben im Editfeld werden direkt ausgewertet und angezeigt. Die Anzeige erfolgt als Prozentwert und/oder grafisch mit drei frei ladbaren Grafiken (gut, mittel, schlecht). Die Grenzwerte, wann von schlecht zu mittel zu gut gesprungen wird, sind wählbar. Zusätzlich noch eine strengere Entropie-Prüfung (ForceEntropie) einstellbar.

Unabhängig von einem TEdit kann ein Passwort auch mit der Funktion GetStrength(Password) bewertet werden. Die restlichen Eigenschaften (sind ja nicht viele) sind selbsterklärend.

Sollte ich etwas übersehen haben oder sich ein Bug eingeschlichen haben... kurzer Hinweis, ich passe das dann an.

PS: getestet mit Delphi 2007. Bis runter zu Delphi 7 sollte es laufen, für Delphi 5/6 nötige Anpassung siehe Post #3. Ob es ab Delphi 2009 läuft, kann ich nicht testen.

Den Vorschlag von mkinzler mit dem TCustomEdit habe ich übernommen. Die direkte Kompatibilität zu Delphi 5/6 spare ich mir.

Namenloser 21. Sep 2010 19:20

AW: TPasswordCheck (Komponente mit Anbindung an ein TEdit)
 
Ich hab's mir jetzt nicht angesehen, aber trotzdem eine Kleinigkeit: Entropy schreibt sich auf Englisch mit Y. Ich finde, man sollte seine Bezeichner immer konsequent in einer Sprache (bevorzugt Englisch) halten. Da im Rest anscheinend ebenfalls englische Bezeichner verwendet werden, solltest du diese Kleinigkeit vielleicht noch ändern.

Satty67 22. Sep 2010 09:05

AW: TPasswordCheck (Komponente mit Anbindung an ein TEdit)
 
Nötige Anpassungen für Delphi 5:

Unit Types und nicht erbbare Propertys auskommentieren (oder löschen)
Delphi-Quellcode:
uses
  Messages, Classes, Controls, StdCtrls, Graphics{, Types};

    //property HelpContext;
    //property HelpType;
    //property HelpKeyword;

    //property OnMouseActivate;
    //property OnMouseEnter;
    //property OnMouseLeave;
.
Die Funktion TryStrToDate kennt Delphi 5 nocht nicht, der Ersatz sieht so aus:
Delphi-Quellcode:
function TPasswordCheck.RemoveDateSeparator(const AString : string): String;
var
  i : Integer;
  DateStr : String;
begin
  DateStr := AString;
  i := Length(DateStr);
  if (i > 0) and (AString[i] = DateSeparator) then
    Delete(DateStr, i, 1);

  try
     StrToDate(DateStr);
     Result := StringReplace(AString, DateSeparator, '', [rfReplaceAll])
  except
    Result := AString;
  end;
end;
.
Der Edit.Text (meistens Edit1) löst natürlich eine (erwartete) Exeption aus, die in der IDE nervt. Ich schau später mal, wie man das ändern kann...

Zitat:

Zitat von NamenLozer (Beitrag 1051082)
Kleinigkeit: Entropy

Done

mkinzler 22. Sep 2010 09:15

AW: TPasswordCheck (Komponente mit Anbindung an ein TEdit)
 
Wenn man den Typ von FEdit von TEdit auf TCustomEdit ändert, funktioniert es auch mit anderen Editkomponenten

Satty67 22. Sep 2010 10:30

AW: TPasswordCheck (Komponente mit Anbindung an ein TEdit)
 
Ja, das sind die Kleinigkeiten, die man nicht bedenkt... werde ich heute Abend noch anpassen.

Für Delphi5/6 Nutzer hab' ich dann sicher auch eine bequemere Lösung gefunden.

himitsu 22. Sep 2010 10:42

AW: TPasswordCheck (Komponente mit Anbindung an ein TEdit)
 
Zitat:

Zitat von Satty67 (Beitrag 1051181)
Für Delphi5/6 Nutzer hab' ich dann sicher auch eine bequemere Lösung gefunden.

Delphi-Quellcode:
{$IFDEF VER130} 
  {$UNDEF USE_TYPES}
{$ELSE}
  {$IFDEF VER140} 
    {$UNDEF USE_TYPES}
  {$ELSE}
    {$DEFINE USE_TYPES}
  {$ENDIF}
{$ENDIF}

uses
  Messages, Classes, Controls, StdCtrls, Graphics {$IFDEF USE_TYPES}, Types{$ENDIF};

...

    {$IFDEF USE_TYPES}
      property HelpContext;
      property HelpType;
      property HelpKeyword;

      property OnMouseActivate;
      property OnMouseEnter;
      property OnMouseLeave;
    {$ENDIF}
Ich hab mich so an die ConditionalExpressions gewöhnt ... schade daß D5 diese vermutlich noch nicht kennt. :cry:
Delphi-Quellcode:
uses
  Messages, Classes, Controls, StdCtrls, Graphics
    {$IF CompilerVersion > 14.0}, Types{$IFEND};

...
Oder du nutzt eine der vielen Compiler-Versions-Check-INC-Dateien (z.B. die aus den Jedi und von mir gibt's auch irgendwo in der DP eine VersionsCheck.inc)

Satty67 22. Sep 2010 11:55

AW: TPasswordCheck (Komponente mit Anbindung an ein TEdit)
 
Sieht gut aus, am meisten nervt aber die Exception bei der Datumsprüfung mit Delphi5/6. Will jetzt aber nicht den String von Hand zerlegen oder den Delphi 7+ Quellcode "klauen".

Mal sehen, was mir da einfällt.

Wird Zeit das eine schöne günstige Hobby-Version von XE kommt, dann kann man endlich guten Gewissens den Leuten Delphi 5 ausreden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz