一段代码如何优化使其不再出现系统给出的警示语句(20分)

  • 主题发起人 主题发起人 rhythmofrain
  • 开始时间 开始时间
R

rhythmofrain

Unregistered / Unconfirmed
GUEST, unregistred user!
功能:实现不同等级设定(1,2,3分别对应超级管理员,高级管理员,普通用户)
不同用户登录。
psw.db数据库结构:有三个项域--Grade(等级),Name(用户名),Password(密码)。
控件:ComboBox1(用于实现下拉菜单显示三个等级)
两个Edit输入框用于实现用户名与密码的输入
Table1现实程序与psw.db的连接
两个按钮Button1为确定,Button2为取消
代码如下:
其中count,cla已设为全局变量,是integer型的
procedure TForm1.Button1Click(Sender: TObject);//确定按钮
var
results,ps:variant;//设置局部变量
begin
count:=count+1;//计数器累加1
results:=table1.lookup ('grade',cla,'name');//检索数据库实现等级与名字对应,不同等级的用户名无效
if results=edit1.Text then ps:=table1.Lookup('name',edit1.Text,'password')
else messageDlg('用户名错误',mtconfirmation,[mbyes],0);
if ps=edit2.Text then MessageDlg('欢迎进入FzK-Studio工作系统',mtConfirmation,[mbyes],0)
else begin
showmessage('错误的密码,请重新输入');
if count=3 then close;
end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
temp:variant;
begin
temp:=combobox1.Text;
if temp='普通用户' then cla:=3
else if temp='高级管理员' then cla:=2
else if temp='超级管理员' then cla:=1;

end;

procedure TForm1.Button2Click(Sender: TObject);//取消按钮
begin
Application.Terminate ;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
table1.Open ;
cla:=3;//初始cla值,使其与下拉菜单的普通用户相对应
end;

end.

程序运行后,选择相应的级别输入正确的用户名,一切都没问题,可是,如果输入错误的话,虽然会有自己设的错误提示,但在确定后还有系统给出的一个叫Debugger Exception Notification:Project project1.exe raised execption class EVariantError with message 'Invalid Variant operation'.Process stopped.Use step or Run to continue.
兄弟我感觉是这段代码有问题:
if results=edit1.Text then ps:=table1.Lookup('name',edit1.Text,'password')
else messageDlg('用户名错误',mtconfirmation,[mbyes],0);
if ps=edit2.Text then MessageDlg('欢迎进入FzK-Studio工作系统',mtConfirmation,[mbyes],0)
else begin
showmessage('错误的密码,请重新输入');
if count=3 then close;
end;
因为如果对应等级中没有这样的用户的话,而又输入密码的话好像密码出错提示并没有出现,而只出现用户名输入不正确的提示!要怎么改呢?我也在想
 
没人答我自己答咯:)
其实很简单,就在tools->debugger option->generl页
把integrated debugging选项前的钩取消掉就OK了
 
后退
顶部