关于字符串的比较问题! ( 积分: 20 )

  • 主题发起人 主题发起人 leafsummer
  • 开始时间 开始时间
L

leafsummer

Unregistered / Unconfirmed
GUEST, unregistred user!
这是我的一段程序,用于用户登录的,
AnsiString LogID,PassWord,PWDB;
LogID=Edit1->Text;
PassWord=Edit1->Text;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from LogIn");
ADOQuery1->SQL->Add("where 登录ID='"+ LogID +"'");
ADOQuery1->Open();
ADOQuery1->ExecSQL();
PWDB=ADOQuery1->FieldByName("密码")->AsString;
if(PWDB==PassWord)
{
LogInForm->Close();
}
else
{
ShowMessage("密码错误请重新输入!");
Edit2->Text="";
}
上面的if语句是对用户输入的密码字符串PassWord和数据库中存取的密码字符串PWDB比较是否相等,我输入了正确的密码,但是还是执行了else
里的语句,
然后我自己定义了一个字符串常量(内容是正确的密码),将之分别PassWord和PWDB比较,结果都是相等的,所以觉得很奇怪,这是怎么回事呢?希望高手赐教!
 
这是我的一段程序,用于用户登录的,
AnsiString LogID,PassWord,PWDB;
LogID=Edit1->Text;
PassWord=Edit1->Text;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from LogIn");
ADOQuery1->SQL->Add("where 登录ID='"+ LogID +"'");
ADOQuery1->Open();
ADOQuery1->ExecSQL();
PWDB=ADOQuery1->FieldByName("密码")->AsString;
if(PWDB==PassWord)
{
LogInForm->Close();
}
else
{
ShowMessage("密码错误请重新输入!");
Edit2->Text="";
}
上面的if语句是对用户输入的密码字符串PassWord和数据库中存取的密码字符串PWDB比较是否相等,我输入了正确的密码,但是还是执行了else
里的语句,
然后我自己定义了一个字符串常量(内容是正确的密码),将之分别PassWord和PWDB比较,结果都是相等的,所以觉得很奇怪,这是怎么回事呢?希望高手赐教!
 
你把adoquery1.execsql去掉
把 If (PWDB==PassWord)换成 If (Pwdb=password)看看
 
去前后空格试试
Trim()
 
以上方法均不可行.....
 
SameText(PWDB,PassWord),不区分大小写,返回值为Boolean类型
 
在钱能的c++程序设计教程中:
# include <iostream.h>
void main(){
if (&quot;abx&quot;==&quot;abx&quot;)
cout <<&quot;yes&quot;;
else
cout <<&quot;no&quot;;
}
我在vc下调试,结果为yes
但是书上说应该是no
给的解释是:
程序中两个字符串的比较实际上是两个地址的比较,在编译时,给了这两个字符不同的地址,所以不同;要比较两个字符串,应该用库函数strcmp()
你试一下吧。
 
楼上正解
 
但是,为什么我在vc下调试却是yes呢?
是vc和bc不一样吗?
 
strcmp()是对字符数组进行操作的,我怎么把string类型的字符串转化成字符数组?
 
SameText(PWDB,PassWord)不行。。。
 
ADOQuery1->ExecSQL();是多余的啊,!!
 
C++ 的 字符串比较操作不是你理解的那样,
应该用函数来比较!!StrComp
 
C++ 的 字符串比较操作是怎么样的?楼上的你能讲讲么?
我看的书上没讲的很详细。。。
 
晕死了,用StrComp也不行啊
 
搞定了,谢谢大家啊
 
为什么我用StrComp只能对数字的字符串进行比较呢?
 
后退
顶部