主题:TP下如何让用户输入密码
只在乎你
[专家分:560] 发布于 2005-10-30 11:55:00
我用Turbo Pascal 7.0,在程序中要求用户输入密码,但不能用readln,因为用户输入的密码不能直接显示出来,而要显示为*(跟Windows下输入密码差不多),请问各位大侠如何实现?
回复列表 (共8个回复)
沙发
jtchang [专家分:5370] 发布于 2005-10-30 21:55:00
简单点可以这样编:
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.
板凳
只在乎你 [专家分:560] 发布于 2005-10-30 23:08:00
To: 楼上
不能处理 BackSpace 键啊
3 楼
jtchang [专家分:5370] 发布于 2005-10-31 16:15:00
所以说简单编。
想处理退格键,那么左键头,右键头呢?还有功能键呢?ESC键呢?编起来程序有够长的!呵呵!
(^_^)
4 楼
只在乎你 [专家分:560] 发布于 2005-11-01 18:42:00
请问楼上readkey需要那个库啊
5 楼
haiwa [专家分:0] 发布于 2005-11-04 11:23:00
早很多年我曾经为了编这样的一个单元用了好几天。
6 楼
Benix [专家分:720] 发布于 2005-11-17 19:38:00
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 楼
小田甜 [专家分:3910] 发布于 2005-11-18 19:35:00
简单点可以这样编:
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 楼
tztyx [专家分:120] 发布于 2005-11-20 21:42:00
ctrl+c
我来回复