我使用C ++语言和MFC文件在Visual Studio 2008中创建了一个程序。它是一个图形用户界面,使用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);
}
}
答案 0 :(得分:9)
您似乎已从对话框资源中删除了一个或多个控件,DoDataExchange
仍在引用它们(通过一个DDX_Control函数)。找出这些资源是什么,并从DoDataExchange
中删除它们的引用。
稍后,如果项目中的其他对话框未使用,则可以从resource.h中删除这些控件ID(IDC_
)。
要查找未使用的资源ID,请执行以下操作:
Resource Symbols..