运行程序时出现断言错误

Assertion Error During Running the program

本文关键字:断言 错误 程序 运行      更新时间:2023-10-16

我在Visual Studio 2008中使用c++语言和MFC文件编写了一个程序。它是一个图形用户界面,使用c++文件处理将学生记录存储在文件中。它工作正常,显示或添加记录,但当我试图修改和删除记录时,它会在运行时给我一个断言错误。

请帮帮我。

用于修改和删除记录的函数代码在这里。

void modifyrec()
{
    Invalidate();
    bool found;
    struct student e;
    getname_dialog diag;
    if(diag.DoModal()==IDOK)
    {
        found = false;
        fp.SeekToBegin();
        while(fp.Read(&e,sizeof(e))>=sizeof(e))
        {
            if(e.batch_no==g_batchno && strcmp(e.name,g_name)==0)
            {
                found = true;
                break;
            }
        }
        if(found == true )
        {
            modify_dialog mdiag(e);
            mdiag.DoModal();
        }
        else
            MessageBox("Record Not Found","Modify Record....");
    }
}
void delrec()
{
    bool foun;
    struct student e;
    Invalidate();
    getname_dialog diag;
    if(diag.DoModal()==IDOK)
    {
        found = false;
        fp.SeekToBegin();
        CFile ft("temp.dat",CFile::modeCreate | CFile:modeWrite);
        while(fp.Read(&e,sizeof(e))>= sizeof(e))
        {
            if(e.batch_no==g_batchno && strcmp(e.name,g_name)==0)
            {
                found = true;
                break;
            }
        }
        if(found == true )
        {
            modify_dialog mdiag(e);
            mdiag.DoModal();
        }
        else
            MessageBox("Record Not Found","Delete Record....");

        fp.Close();
        ft.Close();
        CFile::Remove("students.dat");
        CFile::Rename("temp.dat","student.dat");
        fp.Open("students.dat",CFile::modeCreate |CFile::modeNoTruncate |CFile::modeReadWrite);
    }
}

您似乎已经从对话框资源中删除了一个或多个控件,并且DoDataExchange仍然引用它们(通过一个DDX_Control函数)。找出这些资源是什么,并从DoDataExchange中删除它们的引用。

以后你可以删除这些控制id (IDC_)从resource.h一起,如果他们是不使用在你的项目中的其他对话框。

查看未使用的资源id:

  • 转到资源视图
  • 选择合适的。rc文件
  • 右键单击Resource Symbols..
  • 在对话框中,找出未使用的id(没有检查它们)