我在做一个项目的时候,用到了登录框,在登录框中只有两个BUTTON控件,OK和CANCEL.其ok的代码如下:
   
void CLodinDlg11::OnOK() 
{
// TODO: Add extra validation here
UpdateData(TRUE);
if(m_UserName=="")
{
MessageBox("请输入用户姓名");
return;
}
if(m_Pwd=="")
{
MessageBox("请输入密码");
return;
}
CUsers user;
user.GetDate(m_UserName);
if(user.GetPwd()!=m_Pwd)
{
MessageBox("密码错误,无法登录!");
return;
}
 CDialog::OnOK();

}
可是在运行时有这样的错误,请高手们帮忙解释一下。
先出现一个象messagebox()的确定对话框,对话框而且是出现两次。然后提示说
“ox00406c16”指令引用的
“ox00000000”内存,该内存不能为“read”。
我该如何调试啊。

解决方案 »

  1.   

    把你CUser类的成员函数GetDate代码贴出来看看
      

  2.   

    谢谢你的回复,我按照你说的做了。可是他总提示我说密码错误,我在给CUser表中添加了几个用户名,可是不管输入那个他都提示错误,这是什么原因呢,再我还想问问为什么把GetDate()放到下面就OK了呢
      请给我指点一下,谢谢了
      

  3.   

    CUsers user;
    user.GetDate(m_UserName);
    if(user.GetPwd()!=m_Pwd)
    {
    MessageBox("密码错误,无法登录!");
    return;
    }
     CDialog::OnOK();
    // CUser是一个记录集吧,用于从数据库中提取出用户表中的用户信息,
    // 这个应该没问题,你把logoin对话框的弹出放在那儿呢?
    // CXXXApp::InitInstance()中,如果是这样,也没错。
    // 将CXXXApp::InitInstance()贴出来看看。
    // 总体评价,没错,至少看不出来。if(m_UserName=="")
    {
    MessageBox("请输入用户姓名");
    return;
    }把 m_UserName == "" 改成(""会被构造成一个临时的CString对象,很烦的)
       m_UserName == _T( "" );

       if ( m_UserName.IsEmpty() )
       {
          //...
       }
      

  4.   

    你应该在DEBUG下按F5单步跟踪一下,到底是在那里出错,初步判定应该是你的CUsers类初始化或是GetPwd()这里出错,
      

  5.   

    F5到你的函数开头处,在GETDATE处按F11进入DEBUG,就能找到出错的地方啦