J'ai créé un programme dans Visual Studio 2008 en utilisant le langage C++ et les fichiers MFC. C'est une interface utilisateur graphique qui stocke les enregistrements d'étudiants dans un fichier en utilisant la gestion de fichiers C++. Il fonctionne correctement et affiche ou ajoute des enregistrements, mais lorsque j'essaie de modifier et de supprimer des enregistrements, il me donne une erreur d'assertion en cours d'exécution.Erreur d'assertion lors de l'exécution du programme
S'il vous plaît aidez-moi.
Le code de fonction que j'utilise pour modifier et supprimer des enregistrements est ici.
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);
}
}
Que dit l'erreur d'assertion! En regardant le code, je peux voir une erreur de logique dans delrec mais rien qui causerait une erreur d'assertion. – john
La réponse semble être dans le code non affiché. –
Je vais coller tout le code du programme dès maintenant si vous dites ou il était utile de parler de l'erreur – sam