Narf! Geschrieben 19. Februar 2004 Geschrieben 19. Februar 2004 Hallo Leute! Mein Programm spinnt. Wenn ich es starte und gleich wieder beende, geht alles klar. Nachdem ich aber eine Funktion ausgeführt habe und dann beende, kommt folgende Meldung: Debug Assertion Failed! File: wincore.cpp Line:1002 Und da steht: ASSERT(pMap->LookupPermanent(hWndOrig) == NULL); Beendet wird mit CDialog::OnOK(); Meine Funktion: void C...Dlg::OnBnClickedButton2...() { int Jobs=0; CString Pfad; Pfad=WorkingFolder; ofstream schreiben_jobs(Pfad+"\\[filename].bin", ios::out|ios::binary); ofstream schreiben_start(Pfad+"\\[filename].bin", ios::out|ios::binary); Jobs=m_cJobs.GetCount(); //ein Listenfeld for(int x=0; x<Jobs; x++) { m_cJobs.GetText(x, m_wJobs); //String des Listenindex wird ausgelesen m_cJobs.DeleteString(x); //String wird gelöscht int z=0; for(int y=4; y<=signed(strlen(m_wJobs)); y++) //Ordnername aus String filtern { if(m_wJobs[y]==' '... m_wJobs[y+5]==' ') { QuellOrdner[z]='\0'; z=y+6; y=signed(strlen(m_wJobs)); }//end if(m_wJobs[y]...) else { QuellOrdner[z]=m_wJobs[y]; z++; }//end else by if(m_wJobs[y]...) }//end for(...) y=z; z=0; for(y; y<=signed(strlen(m_wJobs)); y++) //Ordnername aus String filtern { if(m_wJobs[y]==' '... && m_wJobs[y+8]=='n') { ZielOrdner[z]='\0'; y=signed(strlen(m_wJobs)); }//end if(m_wJobs[y]==...) else { ZielOrdner[z]=m_wJobs[y]; z++; }//end else by if(m_wJobs[y]==...) }//end for(...) schreiben_jobs <<QuellOrdner <<endl; schreiben_jobs <<ZielOrdner <<endl; }//end for(...) schreiben_jobs.close(); schreiben_start <<'1' <<endl; schreiben_start.close(); m_cAnmelden.EnableWindow(false); //Button wird deaktiviert }//end void C...Dlg::OnBnClickedButton2Anmelden() Habt Ihr eine Idee woran das liegen könnte? MS Visual C++ .Net, MFC, Dialogfeldbasierend, XP Prof. Zitieren
Klotzkopp Geschrieben 19. Februar 2004 Geschrieben 19. Februar 2004 Es muss nicht daran liegen, aber es ist auf jeden Fall ein Fehler: Wenn du in einer Schleife von 0 bis Anzahl-1 durch deine Listbox gehst und immer einen Eintrag entfernst, vergisst du dabei, dass durch das Entfernen die darunter liegenden Einträge nach oben rutschen. Du bearbeitest also nur jeden zweiten Eintrag, und greifst noch dazu nach der Hälfte der Durchläufe mit ungültigen Indices auf die Listbox zu. Da du den Rückgabewert von GetText nicht abprüfst, bekommst du das nicht mal mit. Was dann im weiteren passiert, ist nicht vorauszusagen. Also: Entweder immer mit Index 0 zugreifen, oder von hinten anfangen. Zitieren
Narf! Geschrieben 20. Februar 2004 Autor Geschrieben 20. Februar 2004 Nein, daran liegt es nicht. Ich habe die Zeile mit DeleteString() gelöscht, aber der Fehler blieb bestehen. Und ich habe die Schleife rückwärts laufen lassen: for(int x=Jobs-1; x>=0; x--) //Weil der erste Eintrag den Index 0 hat gleich -1 { ...; } Und ich habe die erste For-Schleife gelöscht. Und jetzt haut es hin. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.