我在做登陆器的时候遇到的一个问题!!! ( 积分: 30 )

  • 主题发起人 主题发起人 罗马红狼
  • 开始时间 开始时间

罗马红狼

Unregistered / Unconfirmed
GUEST, unregistred user!
if locate('用户名',username,[lopartialkey]) and locate('密码',password,[lopartialkey]) then
请问这个if语句哪里错了,我看了半天也没看出来,系统说是lopartialkey没有定义,locate函数不是系统自带的吗?而且还有tlocateoptions类和integer类的不匹配,真的晕了,哪位帮忙解决一下啊!
 
if locate('用户名',username,[lopartialkey]) and locate('密码',password,[lopartialkey]) then
请问这个if语句哪里错了,我看了半天也没看出来,系统说是lopartialkey没有定义,locate函数不是系统自带的吗?而且还有tlocateoptions类和integer类的不匹配,真的晕了,哪位帮忙解决一下啊!
 
是系统自带的。
Locate(const KeyFields: string
const KeyValues: Variant
Options: TLocateOptions): Boolean;
type
TLocateOption = (loCaseInsensitive, loPartialKey);
TLocateOptions = set of TLocateOption;
 
if locate('用户名',username,[lopartialkey]) and locate('密码',password,[lopartialkey]) then
这样不好吧!
Locate有将‘用户名’和‘密码’连在一起定位的功能,你看看帮助!
 
是你的语法不对。用and连接时两边都要加(),如下:
if (locate('用户名',username,[lopartialkey])) and (locate('密码',password,[lopartialkey])) then
 
要实现这个功能,方法太多了!
多想想把!
 
你这样的登录验证写法有问题,如果一个人的用户名和另一个人的密码符合你上述
要求,那不也可以登录?
正确写法应该是:
if DataModu.DataSetCom.Active then DataModu.DataSetCom.Close;
DataModu.DataSetCom.CommandText:='select * from safe where userid=:userid and
password=:password';
DataModu.DataSetCom.Parameters.ParamByName('userid').Value:=Trim(UserEdit.Text);
DataModu.DataSetCom.Parameters.ParamByName('password').Value:=Trim(PswEdit.Text);
DataModu.DataSetCom.Open;
if DataModu.DataSetCom.RecordCount<1 then
begin
Application.MessageBox('用户名或密码错误!!','错误',MB_OK+MB_ICONERROR);
PswEdit.Text:='';
PswEdit.SetFocus;
end
else
begin
Self.ModalResult:=mrOK;
end;
 
locate('用户名',username,[]) 啥都不要了
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部