Passwörter

Wie bekommt man ein Programm dazu, erst auf die Eingabe des korrekten Passwortes zu starten? Das Problem enthält eigentlich zwei Fragestellungen:

Das erste Problem kann man recht unkompliziert und vor allem ressourcen-schonend lösen, indem man beim Ereignis OnFormCreate alle sichtbaren Kontroll-Komponenten unsichtbar schaltet. Bis auf ein oder zwei Eingabe-Komponenten (im Beispiel : Button5), über die sich das Passwort eingeben lässt.  Das lässt sich elegant mit Hilfe der Komponistenliste realisieren: 

procedure TForm1.FormCreate(Sender: TObject);
var n : integer;
    t : TComponent;
begin
// Initialisierungs-Anweisungen
for n := 0 to ComponentCount-1 do begin
  t := Components[n]; 
  if (t is TControl) then (t as TControl).Visible := false;
end;
Button5.Visible := true;
end;

Für die Lösung der zweiten Frage muss man ein wenig mehr nachdenken. Wie üblich soll das eingegebene Wort nicht als Klartext erscheinen, sondern in Form einer Reihe von Sternchen: ***********. Man muss also die Tastatur-Eingabe abfangen und das eingegebene Zeichen auf der einen Seite für den Vergleich mit dem Passwort retten, auf der anderen Seite durch das Zeichen '*' ersetzen. Das führt zu einer allgemeineren Fragestellung: Wie kann man Eingaben über die Tastatur maskieren. So soll z.B. in einer Datenbank in einem entsprechenden Feld nur die Eingabe von Ziffern möglich sein.

Das Abfangen einer Tastatureingabe kann z.B. beim  Ereignis OnKeyPress geschehen. Die Behandlungsroutine dieses Ereignisses liefert das eingegebene Zeichen (var key : char) zurück, das man wie im folgenden Beispiel abfangen und manipulieren kann: 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  case key of
    'a'..'z' : begin
                 passwort := passwort +key;
                 key := '*';
               end;
        #13  : Edit2.Text := passwort;
else key := #0;
end;
end;

 

Zurück zu Delphi

© Dietrich Praclik