gpt4 book ai didi

c++ - 程序运行时断言错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:57:14 24 4
gpt4 key购买 nike

我使用 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);
}
}

最佳答案

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

如果您的项目中的其他对话框未使用这些控件 ID (IDC_),您稍后可以从 resource.h 中删除它们。

要找出未使用的资源 ID,请执行以下操作:

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

关于c++ - 程序运行时断言错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com