回 帖 发 新 帖 刷新版面

主题:TP下如何让用户输入密码

我用Turbo Pascal 7.0,在程序中要求用户输入密码,但不能用readln,因为用户输入的密码不能直接显示出来,而要显示为*(跟Windows下输入密码差不多),请问各位大侠如何实现?

回复列表 (共8个回复)

沙发

简单点可以这样编:

uses crt;
var  s:string;
     c:char;
begin
  s:='';
  c := readkey;
  while c<>#13 do
    begin
        s := s + c;
        write('*');
        c := readkey;
    end;
  writeln;
  writeln(s);
end.

板凳

To: 楼上
   不能处理 BackSpace 键啊

3 楼

所以说简单编。
想处理退格键,那么左键头,右键头呢?还有功能键呢?ESC键呢?编起来程序有够长的!呵呵!

(^_^)

4 楼

请问楼上readkey需要那个库啊

5 楼

早很多年我曾经为了编这样的一个单元用了好几天。

6 楼

program mima;
uses crt;
var i:integer;
    n:char;
    ch:string;
begin
    clrscr;
    n:=readkey;
    while ord(n)<>13 do
      begin
        if ord(n)=8 then
            begin
              ch:=copy(ch,1,length(ch)-1);
              delline;
              gotoxy(1,wherey);
              for i:=1 to length(ch) do
                write('*');
            end
          else
            begin
              write('*');
              ch:=ch+n
            end;
        n:=readkey
      end;
end.
可以识别BackSpace
但左右箭头识别不了,谁能提供方向箭头的Ascall码?

7 楼

简单点可以这样编:

uses crt;
var  s:string;
     c:char;
begin
  clrscr;
  s:='';
  c := readkey;
  while c<>#13 do
    begin
        if s<>#8{退格} then begin
          s := s + c
        end else begin
          if length(s)>0 then s:=copy(s,1,length(s)-1)
          gotoxy(wherex-1,wherey)
          write(' ');
          gotoxy(wherex-1,wherey)
        end;
        c := readkey;
    end;
  writeln;
  writeln(s);
end.

大部分内容摘抄子1楼

8 楼

ctrl+c

我来回复

您尚未登录,请登录后再回复。点此登录或注册