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


Anmelden zum Antworten