CString in CFile



  • Hallo

    Ich versuche mich nun mal wieder an der MFC und scheitere schon beim Schreiben in eine Datei.

    CString Test(_T("Hallo. Das ist ein test"));
    CFile FileToWriteIn;
    FileToWriteIn.Open(FileName, CFile::modeWrite | CFile::modeCreate);
    FileToWriteIn.Write(Test.GetBuffer(), Test.GetLength());
    

    Ich weiß allerdings nicht, ob das richtig ist. Gerade der zweite Parameter von write scheint nicht zu stimmen weil das die Ausgabe ist:

    H a l l o . D a s i

    Ich würde mich sehr über Hilfe freuen.

    Danke

    chrische



  • Überall wo du buffen angeben kannst, kannst du String angeben:

    also

    FileToWriteIn.Write(Test, Test.GetLength()):



  • probiers mal mit Test.GetLength() * 2 (Unicode).



  • Hallo

    Das ändert aber an meiner Ausgabe nichts. Ist aber trotzdem schön zu wissen.

    chrische



  • siehe post oben. GetLength() gibt die Anzahl der Zeichen des Strings zurück, wenn jedoch Unicode definiert ist stimmt diese Anzahl nicht mit der Größe in byte überein (mal 2). Es gibt sicher noch Konvertierungen die dies automatisch bewerkstelligen, kenne ich nur leider nicht.


  • Administrator

    Wenn du einfach nur lesbare Strings in ein File kopieren willst, also z.b. CString's in ein *.txt, dann empfehle ich dir CStdioFile.

    Ansonsten könntest es auch so probieren, allerdings ist CArchive mehr dazu gedacht verschiedene Daten zusammen zu packen. Zeilenumbruch ist glaub ich damit gar nicht zu realisieren.

    CString strTest(_T("Hallo. Das ist ein test"));
    
    CFile FileToWriteIn;
    if(FileToWriteIn.Open(FileName, CFile::modeWrite | CFile::modeCreate))
    {
        CArchive ar(&FileToWriteIn, CArchive::store)
        if(ar.IsStoring())
        {
            ar << strTest;
        }
        ar.Close();
        FileToWriteIn.Close();
    }
    

    Grüssli



  • Hallo

    Ich bneutze jetzt CStdioFile und alles funktioniert einwandfrei.

    Danke

    chrische


Anmelden zum Antworten