unit test;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; // einvalidation =class(exception) // einvalidpassword =class(einvalidation) // einvalidinput =class(einvalidation) procedure passwordkeypress(sender:tobject;var key:char); procedure inputeditkeypress(sender:tobject;var key:char); private { Private declarations } public // errorcode:integer; //constructor create(const msg:string;errornum:integer); // constructor create; // constructor create(errornum:intger); { Public declarations } end;var Form1: TForm1; implementation{$R *.dfm}type einvalidation =class(exception) public errorcode:integer; constructor create(const msg:string;errornum:integer); end;einvalidpassword =class(einvalidation) public constructor create; end;einvalidinput =class(einvalidation) public constructor create(errornum:integer); end;constructor einvalidation.create(const msg:string;errornum:integer); begin inherited create(msg); errorcode:=errornum; end;constructor einvalidpassword.create; begin inherited create('invalid password enter',0); end;constructor einvalidinput.create(errornum:integer); var msg:string; begin case errornum of 1: msg:='11111111'; 2: msg:='22222222'; else msg:='33333'; end; inherited create(msg,errornum); end; procedure tform1.passwordkeypress(sender:tobject;var key:char); const currentpassword='delphi'; begin if key=#13 then begin try if password.text<>currentpassword then raise einvalidpassword.create; label2.visibel:=true; inputedit.visible:=true; inputedit.setfocus; password.visible:=false; label1.visible:=false; except on einvalidpassword do begin password.text:=''; raise; end; end; key:=#0; end; end; procedure tform1.inputeditkeypress(sender:tobject;var key:char); var res:real; code:integer; begin if key=#13 then begin try val(inputedit.text,res,code); if code<>0 then raise einvalidinput.create(1); if (res>1) or (res<0) then raise einvalidinput.create(2); messagedlg('correct input',mtinformation,[mbok],0); key:=#0; except on e:envalidinput do begin inputedit.text:=''; messagedlg(e.message,mtwarning,[mbok],0); end; end; end; end; end. 这段程序错哪了?
已经调试可以运行了,但是不论在password里面输入什么,回车都没反映。怎么回事呢? unit test;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Label1: TLabel; password: TEdit; Label2: TLabel; inputedit: TEdit; Button1: TButton; procedure passwordkeypress(sender:tobject;var key:char); procedure inputeditkeypress(sender:tobject;var key:char); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; implementation{$R *.dfm}type einvalidation =class(exception) public errorcode:integer; constructor create(const msg:string;errornum:integer); end;einvalidpassword =class(einvalidation) public constructor create; end;einvalidinput =class(einvalidation) public constructor create(errornum:integer); end;constructor einvalidation.create(const msg:string;errornum:integer); begin inherited create(msg); errorcode:=errornum; end;constructor einvalidpassword.create; begin inherited create('invalid password enter',0); end;constructor einvalidinput.create(errornum:integer); var msg:string; begin case errornum of 1: msg:='11111111'; 2: msg:='22222222'; else msg:='33333'; end; inherited create(msg,errornum); end; procedure tform1.passwordkeypress(sender:tobject;var key:char); const currentpassword='delphi'; begin if key=#13 then begin try if password.text<>currentpassword then raise einvalidpassword.create; label2.visible:=true; inputedit.visible:=true; inputedit.setfocus; password.visible:=false; label1.visible:=false; except on einvalidpassword do begin password.text:=''; raise; end; end; key:=#0; end; end; procedure tform1.inputeditkeypress(sender:tobject;var key:char); var res:real; code:integer; begin if key=#13 then begin try val(inputedit.text,res,code); if code<>0 then raise einvalidinput.create(1); if (res>1) or (res<0) then raise einvalidinput.create(2); messagedlg('correct input',mtinformation,[mbok],0); key:=#0; except on e:einvalidinput do begin inputedit.text:=''; messagedlg(e.message,mtwarning,[mbok],0); end; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin close end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit; // einvalidation =class(exception)
// einvalidpassword =class(einvalidation)
// einvalidinput =class(einvalidation)
procedure passwordkeypress(sender:tobject;var key:char);
procedure inputeditkeypress(sender:tobject;var key:char);
private
{ Private declarations }
public
// errorcode:integer;
//constructor create(const msg:string;errornum:integer);
// constructor create;
// constructor create(errornum:intger);
{ Public declarations }
end;var
Form1: TForm1;
implementation{$R *.dfm}type
einvalidation =class(exception)
public
errorcode:integer;
constructor create(const msg:string;errornum:integer);
end;einvalidpassword =class(einvalidation)
public
constructor create;
end;einvalidinput =class(einvalidation)
public
constructor create(errornum:integer);
end;constructor einvalidation.create(const msg:string;errornum:integer);
begin
inherited create(msg);
errorcode:=errornum;
end;constructor einvalidpassword.create;
begin
inherited create('invalid password enter',0);
end;constructor einvalidinput.create(errornum:integer);
var
msg:string;
begin
case errornum of
1:
msg:='11111111';
2:
msg:='22222222';
else
msg:='33333';
end;
inherited create(msg,errornum);
end;
procedure tform1.passwordkeypress(sender:tobject;var key:char);
const
currentpassword='delphi';
begin
if key=#13 then
begin
try
if password.text<>currentpassword then
raise einvalidpassword.create;
label2.visibel:=true;
inputedit.visible:=true;
inputedit.setfocus;
password.visible:=false;
label1.visible:=false;
except
on einvalidpassword do
begin
password.text:='';
raise;
end;
end;
key:=#0;
end;
end;
procedure tform1.inputeditkeypress(sender:tobject;var key:char);
var
res:real;
code:integer;
begin
if key=#13 then
begin
try
val(inputedit.text,res,code);
if code<>0 then
raise einvalidinput.create(1); if (res>1) or (res<0) then
raise einvalidinput.create(2);
messagedlg('correct input',mtinformation,[mbok],0);
key:=#0;
except
on e:envalidinput do
begin
inputedit.text:='';
messagedlg(e.message,mtwarning,[mbok],0);
end;
end;
end;
end;
end.
这段程序错哪了?
unit test;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Label1: TLabel;
password: TEdit;
Label2: TLabel;
inputedit: TEdit;
Button1: TButton; procedure passwordkeypress(sender:tobject;var key:char);
procedure inputeditkeypress(sender:tobject;var key:char);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
implementation{$R *.dfm}type
einvalidation =class(exception)
public
errorcode:integer;
constructor create(const msg:string;errornum:integer);
end;einvalidpassword =class(einvalidation)
public
constructor create;
end;einvalidinput =class(einvalidation)
public
constructor create(errornum:integer);
end;constructor einvalidation.create(const msg:string;errornum:integer);
begin
inherited create(msg);
errorcode:=errornum;
end;constructor einvalidpassword.create;
begin
inherited create('invalid password enter',0);
end;constructor einvalidinput.create(errornum:integer);
var
msg:string;
begin
case errornum of
1:
msg:='11111111';
2:
msg:='22222222';
else
msg:='33333';
end;
inherited create(msg,errornum);
end;
procedure tform1.passwordkeypress(sender:tobject;var key:char);
const
currentpassword='delphi';
begin
if key=#13 then
begin
try
if password.text<>currentpassword then
raise einvalidpassword.create;
label2.visible:=true;
inputedit.visible:=true;
inputedit.setfocus;
password.visible:=false;
label1.visible:=false;
except
on einvalidpassword do
begin
password.text:='';
raise;
end;
end;
key:=#0;
end;
end;
procedure tform1.inputeditkeypress(sender:tobject;var key:char);
var
res:real;
code:integer;
begin
if key=#13 then
begin
try
val(inputedit.text,res,code);
if code<>0 then
raise einvalidinput.create(1); if (res>1) or (res<0) then
raise einvalidinput.create(2);
messagedlg('correct input',mtinformation,[mbok],0);
key:=#0;
except
on e:einvalidinput do
begin
inputedit.text:='';
messagedlg(e.message,mtwarning,[mbok],0);
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close
end;end.