Problem mit CFile::Read()



  • Ich möchte eine XML-Datei öffnen und ausgeben.
    Funktioniert auch alles, nur erhalte ich bei der Ausgabe am Ende einige Sonderzeichen die nicht in der XML Datei stehen.

    hier mein code:

    TCHAR* CSocketGuiDlg::ReadXMLFile()
    {		
    	f.SeekToBegin();
    	int fileSize = f.GetLength();
    	TCHAR *str = new TCHAR[fileSize];
    	f.Read(str, fileSize);
    	return str;
    }
    

    und hier wird alles in ein Textfeld ausgegeben:

    GetDlgItem(IDC_FILE)->SetWindowTextA(LPCTSTR(ReadXMLFile()));
    

    die Ausgabe sieht so aus:

    <addresses>
       <person>
          <name>
             <first>Ingo</first>
             <last>Melzer</last>
          </name>
          <city>Laupheim</city>
          <country>Germany</country>
       </person>
       <person>
          <name>
             <first>Andreas F.</first>
             <last>Borchert</last>
          </name>
          <city>Lonsee</city>
          <country>Germany</country>
       </person>
    </addresses>
    [b]ýýýý««««««««þîþîþ[/b]
    

    Hab auch alles schon mal in einem Stream über einen Socket verschickt. Erhalte dann die gleiche Ausgabe. Also liegt es nicht an dem Textfeld in dem ich es ausgebe.
    Hat jemand Tipps für mich?!?

    Danke!! 🙂



  • habs schon

    TCHAR* CSocketGuiDlg::ReadXMLFile()
    {       
        f.SeekToBegin();
        int fileSize = f.GetLength();
        TCHAR *str = new TCHAR[fileSize];
        f.Read(str, fileSize);
        str[fileSize]='\0';
        return str;
    }
    


  • Und ich hoffe, dir ist klar, daß du gerade in fremdem Speicher rumschreibst. reservier dir lieber gleich ein zusätzliches Byte, um dort das \0 reinpacken zu können.



  • Außerdem ist die Verwendung von TCHAR hier falsch, und der Cast auf LPCTSTR überflüssig.


Anmelden zum Antworten