运行程序时出现断言错误
Assertion Error During Running the program
我在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(没有检查它们)
相关文章:
- OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算
- 我收到一个断言错误,但是当我编写 cout 语句时,它会消失
- 尝试删除指向派生对象的基指针时断言错误
- Sysmalloc:使用向量的断言错误
- OpenCV CV 查找单应断言错误计数器 = > 4
- Mat的convertTo函数在OpenCV中将灰度图像的类型转换为CV_32F时抱怨断言错误
- 是什么导致我的C 代码中的断言错误
- 迭代器取消引用断言错误
- boost::shared_ptr 断言错误与 boost::asio:io_service
- CDao数据库断言错误
- STL 迭代器:断言错误
- 断言错误,字符串下标超出范围
- 调试断言错误-OpenCV
- 向量push_back会导致断言错误,但列表push_back有效
- 如何在子进程中禁用断言错误对话框
- OpenCV.norm中的断言错误
- 将功能区添加到现有的非功能区 mfc 项目 - 在 VS2010 中断言错误
- 访问指向像素openCV的指针时发生断言错误
- 断言错误,即使在使用 new 初始化字符指针后也是如此
- 使用结构向量 c++ 的断言错误