首先说明密码在数据库内保存时候暂时没加密。
然后界面上edit1 :输入原密码
          edit2 :输入新密码
          edit3 :确认新密码部分代码如下,说明:密码保存在operator这个表里面的“密码”。操作员ID是主窗口之前传递过来的id := form1.id          qry1.Close ;
          qry1.SQL.Clear ;
          qry1.SQL.Text := 'select 密码 from  operator WHERE 操作员id ='''+id+'''' ;
          qry1.Open;          temp := qry1.FieldByName('密码').AsString;          ShowMessage(temp);       //中间特地加了这两句,看见temp和edit1里面的内容是一样的
          ShowMessage(edit1.Text);//中间有所省略
          if temp <> edit1.text  then
             begin
               Application.MessageBox('原密码输入错误','警告') ;
               edt1.Text := '';
               edt1.SetFocus;
             end
          else   edt2.SetFocus  ;为什么这里就是通不过,一个劲显示原密码错误?

解决方案 »

  1.   

    看见temp和edit1里面的内容是一样的
    -------------------------------------
    你看到的一致实际上不一定一致,也许里面带有其他字符,例如常见的空格符,你可以使用去空格函数 Trim(edit1.text)然后再比较, 你也可以断点打在:if temp <> edit1.text  then 上单步调试看是否真的一致。如果还有什么问题,请加入QQ高级群:9642802 找管理员大海讨论!
      

  2.   

    多谢跟帖啊,我用了去空格函数trim,但是还是没有用
      

  3.   

    没有出错,只是老是显示“原密码输入错误”。这意味着数据库里的密码,和我输入的原密码(edit1.text)不一致。
    但是我已用了trim,然后showmessage出来两个值完全一样
      

  4.   

    1.  将密码字段改成Varchar类型
    2. 确认的大小写有没有问题
      

  5.   

    多谢大家,问题解决了原来我是trim(edit1.text),但是temp没有trim,所以导致不一样