Probleme mit CStdiofile
-
Hallo *,
zur Zeit kämpfe ich mit einem Problem mit CStdioFile. Ich möchte eine Datei zeilenweise einlesen (ca. 450 Zeilen). Ich mache das so:
CStdioFile SI; CString os; int i, set_index, ssize; ssize = 0; if( !SI.Open("C:\\New Temp\\SI.txt", CFile::modeRead | CFile::typeText)) { AfxMessageBox("Fehler beim Öffnen!", MB_OK); return; } while (SI.ReadString(os)) { TRACE("%3d - %s\n", ssize++, os); } TRACE("ALL DONE\n");
Das Ganze findet in einer dialogbasierten Anwendung statt. Wenn ich den Button zum Lesen betätige (im Debug-Modus), werden 394 Zeilen gelesen (variiert pro Ausführung), dann geschieht nichts mehr. Interessanterweise kommt auch der letzte Trace nicht im Debug-Fenster raus, aber ich kann das Programm über den OK- oder den Cancel-Button beenden.
Hat jemand ne Idee?
Gruss
yeti
/Edit: Habe eben festgestellt, dass mein Problem wie oben beschrieben mit CStdioFile und nicht wie zuerst vermutet mit CStringArray zusammenhängt - Sorry!
-
ReadString schmeißt eine CFileException, fang die mal - vielleicht tritt ja ein Fehler auf.
-
Wenn du zu Testzwecken mal statt
TRACE("%3d - %s\n", ssize++, os);
das einbaust
AfxMessageBox(os);
kannst du sehen, das alle Zeilen abgearbeitet werden. Ist vielleicht ne Macke im TRACE oder sonstwas, das hört bei mir auch bei 394 auf auszugeben...P.S.:
dein ssize hat übrigens keinen Anfangswert. [edit] Argh, vergiss es[/edit]
-
Hi,
vielen Dank für eure Hilfe - ich hab jetzt mal den Trace in der Schleife auskommentiert und lasse mir nach der Schleife die Anzahl der Records anzeigen - scheint zu stimmen!
So ein Murks, wie soll man da vernünftig debuggen!
Also, Danke nochmal!
Gruss
yeti