Text aus Datei lesen



  • void CLine::Serialize(CArchive &ar)
    {
    	CObject::Serialize(ar);
    	CString text;
    
    	if (ar.IsStoring())
    	{
    	}
    	else
    	{
    		// Fehler: "Unerwartetes Dateiformat"
    		ar.ReadString(text);
    	}
    }
    

    Versteh ich nicht 😞
    Ich dachte ReadString liest eine Zeile aus der Datei?
    Die einzulesende Datei ist ne txt Datei im Ansi-Format.



  • ehrlich ?

    Ich versteh überhaupt nicht was du uns sagen möchtest, und was das konstrukt uns sagen soll
    wo ist der verweis auf die datei?
    wie ist der aufruf?
    oder wird gelesen?
    wer was wo wie hae?



  • Ich habe CArchive nie wirklich angewendet, daher bin ich mir jetzt nicht ganz sicher...
    In Serialize arbeitet man mit << und >> aber nicht mit ReadString oder so.

    Schau da bitte nochmal in ein Buch. 🙂

    Wenn du da eine Textdatei einlesen willst, schau dir CStdioFile an. Da funktioniert dann auch ReadString. 😉



  • Versuch mal sowas:

    CStdioFile ReadFile;
    CString strFileName, strTmp, strResult;
    
    strFileName = /*Hier muss der Pfad hin*/;
    
    if(ReadFile.Open(strFileName, CFile::modeRead))
    {
        while(ReadFile.ReadString(strTmp))
        {
            strResult += _T(strTmp) + _T("\r\n");
        }
        ReadFile.Close();
    }
    


  • mein code kommt aus "c++ in 21 tagen" hier.

    ich muss irgendwie die serialisierung so umbauen, dass ich meine datei damit einlesen kann. (enthält einfach zahlen die koordinaten für ne linie repräsentieren)
    ich kann eine von der serialisierung generierte datei auch mit readline lesen, nur nicht meine eigene datei.
    denn sobald ich sie im filedialog ausgewählt habe, kommt die exception.

    ich könnte ja auch den code von oben in die serialisierung einbauen, obwohl das nach meinem verständniss dann völlig schwachsinnig wäre.
    aber wie komme ich an die datei aus dem filedialog?
    "ar.m_strFileName" enthält zwar den dateinamen, aber ich komme scheinbar dank exception nicht mal zur routine.

    ich meine zwar das konzept der serialisierung verstanden zu haben, aber irgendwo fehlt scheinbar doch noch etwas 😡



  • *push*

    Es wäre sehr erfreulich, könnte mir doch noch jemand Hilfestellung bei meinem Problem geben.

    Wie lese ich eine eigene Datei mit Hilfe der Serialisierung (Funktion siehe oben) ein.

    Bin nämlich noch kein Stück weiter 😞

    Vielen Dank!



  • wann genau kommt denn die exception?
    hast du genug speicher reserviert das den namen (+ pfad) beinhalten kann?



  • Die Exception tritt auf wenn ich im FileDialog der Serialisierung eine Datei auswähle.
    Eigentlich klar warum er da eine Exception schmeißt, schließlich erwartet er sein eigenes Format, die Datei ist aber irgendeine Textdatei.
    Aber nach allem was ich bisher gelesen hab, soll man auch jede beliebige Datei mit der Serialisierung öffnen können.


  • Mod

    DarsVaeda schrieb:

    void CLine::Serialize(CArchive &ar)
    {
    	CObject::Serialize(ar);
    	CString text;
    	
    	if (ar.IsStoring())
    	{
    	}
    	else
    	{
    		// Fehler: "Unerwartetes Dateiformat"
    		ar.ReadString(text);
    	}
    }
    

    Versteh ich nicht 😞
    Ich dachte ReadString liest eine Zeile aus der Datei?
    Die einzulesende Datei ist ne txt Datei im Ansi-Format.

    Nein! Das ist eben kein Lesen einer Textdatei.
    Wenn die Serialisierung verwendet wird, dann werden Strings nicht als 0 terminieter String gespeichert sondern zuerst binär die Länge gefolgt von den daten ohne '\0'!

    Serialisierung einer Textdatei funktioniert so nicht!



  • Hast du vielleicht irgend einen Text, kann auch n Buch sein, der beschreibt wie es funktioniert?


Anmelden zum Antworten