CFileException
-
Hallo,
ich habe jetzt schon ein weilchen gesucht, vielleicht an den falschen stellen. Aber muss ich etwas in den Header schreiben wenn ich eine CFileException mache und wenn ja was...
wenn nicht an was könnte es hängen dass das dlg was früher ohne probs sich öffnen liess jetzt nur noch einen fehlermeldung ausgibt und dann den rest schliesst??
Debug Assertion fail! -> gibt er als fehler aus.
ich finde wie gesagt nix, und das letzt was ich veränderte was das mit der CFileException...
-
Hallo,
da mir keiner zu obrigen thema helfen kann.
hab ich jetzt was anderes:if (abc.Open(pfad, CFile::modeRead)) { while(abc.ReadString(in)) { while(in.Right(1) == _T(" ")) { in.TrimRight(); } pBox->InsertString(-1, in +_T("\r\n")); }
zwar lese ich aus einem file aus in in.
es soll dann in eine listbox geschrieben werden. aber zuvor sollen die leerzeichen am ende entfernt werden.
Mit dem oben geposteten code geht das aber nicht so richtig.
Kann mir jemand eine verbesserung vorschlagen??
-
Servus,
es könnte an dem "Deutsch" liegen das du wo geschreibst hast in das Text oben. Herje, du vergewaltigst die Sprache ganz schön. Das ist wirklich schwer zu lesen.
CStdioFile fReadFile(_T("D:\\1.txt"), CFile::modeRead); CString strBuffer = _T(""); while (fReadFile.ReadString(strBuffer)) { strBuffer.Trim(); if (strBuffer != _T("")) m_ctrListBox.InsertString(0, strBuffer); } fReadFile.Close();
m_ctrListBox ist eine Membervariable von deiner ListBox. Du brauchst nicht mehr zu machen als die Methode "Trim()" aufzurufen.
*winke*
Hellsgore
-
hi, danke
das hat funktioniert.ist mein deutsch wirklcih so schlecht???
ích meinte eigentlich ob etwas in den header muss wenn man CFileException nutzt. Aber das hat sich schon erledigt.
Da es nach dem ich auf Release mode umgestellt habe auf einmal kein fehler mehr da war.
-
Kein Wunder. Es war ja auch ne _Debug_ Assertion.
-
Servus,
nein, jetzt ist deine deutsch besser *g*. Warst wahrscheinlich nur ein wenig zu faul gewesen um deine Sätze zu vervollständigen.
Mit dem umschalten auf den Release - mode hat es sich in deinem Fall aber nicht getan. Der Fehler ist immernoch vorhanden. Wie meinst du das eigentlich mit "Einbinden von CFileException"?
so etwas?
try { Katzenklo(); } catch (CFileException* e) { e->MachWas(); }
Wenn er dabei einen Fehler wirft, dann wird wohl in deiner Einlesestruktur etwas falsch gelaufen sein. Dafür ist dein try-catch Block von Nutzen. Setze mal einen BreakPoint beim Einlesen in deiner While Schleife und öffne mal eine kleine Datei. Dann gehst du einfach mal Satz für Satz durch.
Kriterien:
- Datei geöffnet / geschlossen?
- Buffer zu klein?
- Datei zu groß?
- Datei schon geöffnet?Was für ein Fehler beschreibt er dir denn?
*winke*
Hellsgore
-
hi,
ich habe einen try/catch block bereits (daher weiss ich wie der funzt)
Den Fehler wirft er nur beim ausführen aus, wärend dem erstellen/kompilieren zeigt er keinen an.
Wie gesagt dachte ich das es daran liegt, da das letzt was ich tat etwas aus dem header zu löschen und dieses gehörte zu CFileException (bin mir aber nicht sicher). Leider hatte ich mir das niergends erst gesichertIch muss vielleicht mehr erzählen:
Früher ging das Prog ohne probleme, mit der exception. Ich hatte etwas in den Header eingefügt, frag mich nicht woher ich das hatte (ich such schon überall), und ich bin mir nciht sicher ob ich es wirklich brauchte.
So irgendwann zeigte er mir in diesen vier zeilen im header einen fehler an, da ich mir nicht besser zu helfen wusste (und ich irgendwie dachte, dass ich das eh nicht mehr brauch) habe ich das raus gelöscht.
So und jetzt spinnt er wenn er das zweite dlg öffnen soll. Ansich steht niergend etwas von Exception, auch kein try/catch block.
Aber es war das was ich als letztes änderte.....So, jetzt weiss ich halt nicth wirklich weiter.
Brauch etwas im header ??
ja oder nein???
-
Da keiner weiss was den Fehler verursacht wird dir da auch keiner direkt eine Antwort drauf geben können.
Debuggen und finden wo der Fehler auftritt musst du schon selber.
Aber soviel kann man sagen: Würde eine Datei Fehlern würde er beim kompilieren meckern. Du hast vielmehr einen Fehler im Code.