AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Passworteingabe bei einer Konsolenanwendung

Passworteingabe bei einer Konsolenanwendung

Ein Thema von JamesBlond · begonnen am 16. Apr 2004 · letzter Beitrag vom 16. Apr 2004
Antwort Antwort
JamesBlond

Registriert seit: 17. Mär 2004
Ort: PB
25 Beiträge
 
Delphi 5 Enterprise
 
#1

Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 12:03
Hallo!
Gibt es bei einer Konsolenanwendung auch die Möglichkeit, das was eingegeben wird nicht anzuzeigen oder halt dafür ein definiertes Zeichen anzeigen zu lassen?
Müßte in ner Konsolenanwendung ein Passwort einlesen... und im "klartext" wäre das ja ziemlich hässlich.
Danke!

Gruß

Matthias
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 14:44
Unter c/c++ gibt es nen 'Befehl' namens 'getch'. Damit kann man einzelne Zeichen von der Tastatur 'lesen', ohne dass diese angezeigt werden. Vielleicht gibt es etwas ähnliches auch unter Delphi?!?

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 15:08
Es wäre aber schon praktisch, wenn der Benutzer sehen könnte, wieviel er von seinem Passwort schon eingegeben hat
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 15:22
Bei getch kriegst du die zeichen ja einzelnd. Also machst du ne abfrage rein, z.B. ob enter gedrückt wurde, womit du weist, dass jetzt das Pwd vollständig ist. Andernfalls lässt du eben ein Zeichen anzeigen, z.B. *. Das alles lässt du als 'endlosschleife' laufen, und es sollte funktionieren ...

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
XeRo

Registriert seit: 23. Okt 2003
Ort: Warth
461 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 16:20
Ich vermute mal du meinst das hier:

Delphi-Quellcode:
 procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.PasswordChar:='*';
end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 16:22
Zitat von XeRo:
Ich vermute mal du meinst das hier:

Delphi-Quellcode:
 procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.PasswordChar:='*';
end;
Wer lesen kann ist klar im Vorteil. Es geht um eine Konsolen Anwendung.

@MrKnogge: Unter Linux wird auch nicht angezeigt, wie viele Buchstaben man schon eingegeben hat.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
XeRo

Registriert seit: 23. Okt 2003
Ort: Warth
461 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 16:29
peinlich peinlich...

Bei so was arbeite ich NOCH IMMER im TurboPascal. Da geht so was NOCH einfach
  Mit Zitat antworten Zitat
DaFox

Registriert seit: 1. Aug 2003
Ort: Kippenheim
90 Beiträge
 
#8

Re: Passworteingabe bei einer Konsolenanwendung

  Alt 16. Apr 2004, 17:30
Hi,

hier ein kleines Bsp.

Code:
uses
  Windows, SysUtils;

function KeyPressed: Boolean;
var
  NumEvents: DWORD;
begin
  If GetNumberOfConsoleInputEvents(GetStdhandle(STD_INPUT_HANDLE), NumEvents) then
    KeyPressed := NumEvents > 0
  else
  begin
    WriteLn(Format('GetNumberOfConsoleInputEvents failed, reason: %s',
                   [SysErrorMessage(GetLastError)]));
    KeyPressed := true;
  end;
end;

function ReadKey: Char;
var
  InputBuf: Char;
  NumRead: DWord;
begin
  InputBuf := #0;
  If ReadConsole(GetStdhandle(STD_INPUT_HANDLE), @InputBuf, 1, NumRead, nil) then
    Result := InputBuf
  else
  begin
    WriteLn(Format('ReadConsole failed, reason: %s',
                   [SysErrorMessage(GetLastError)]));
    Result := #0;
  end;
end;

function GetInputmode: DWord;
begin
  Result := 0;
  GetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), Result);
end;

var
  ch: Char;
  str: String;

begin
  str := '';
  SetConsoleMode(GetStdhandle(STD_INPUT_HANDLE), GetInputmode and
                 not (ENABLE_WINDOW_INPUT or ENABLE_MOUSE_INPUT or
                 ENABLE_LINE_INPUT or ENABLE_ECHO_INPUT));
  while true do
  begin
    if KeyPressed then
    begin
      ch := ReadKey;
      if ch <> #13 then
      begin
        str := str + ch;
        Write('*');
      end else break;
    end;
  end;
  WriteLn;
  WriteLn('user input: ' + str);
  ReadKey;
end.
Wie man sieht, wird hier Backspace etc. nicht berücksichtigt. Es werden auch nicht nur alphanumerische Zeichen angenommen. Das ist Dein Part .

Gruß,
Markus
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 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