CFile liest Zeichen ein die nicht in der Datei stehen



  • Hallo ich bins schon wieder

    folgender code

    void LoadLogFile(CString& op)
    {
    	CFile file(L"test.log",CFile::modeRead);
    	ULONGLONG fileLength= file.GetLength();
    	char *tmp = new char[fileLength];
    	file.Read(tmp,fileLength);
    	CString data(tmp);
    	delete[] tmp;
    	op = data;
    }
    // irgendwo anderes
    CString tmp;
    LoadLogFile(tmp);
    SetDlgItemText(IDC_RICHEDIT21,tmp);
    

    leider erscheint auf meinem RichEdit nach der erwarteten Ausgabe noch ein paar komische Zeichen "ýýýý««««««««þîþ" die nicht in der Datei stehen.
    Warum ?



  • walljumper schrieb:

    Hallo ich bins schon wieder

    folgender code

    void LoadLogFile(CString& op)
    {
    	CFile file(L"test.log",CFile::modeRead);
    	ULONGLONG fileLength= file.GetLength();
    	char *tmp = new char[fileLength];
    	file.Read(tmp,fileLength);
    	CString data(tmp);
    	delete[] tmp;
    	op = data;
    }
    // irgendwo anderes
    CString tmp;
    LoadLogFile(tmp);
    SetDlgItemText(IDC_RICHEDIT21,tmp);
    

    leider erscheint auf meinem RichEdit nach der erwarteten Ausgabe noch ein paar komische Zeichen "ýýýý««««««««þîþ" die nicht in der Datei stehen.
    Warum ?

    Das der Code überhaupt immer sauber funktioniert wundert mich.
    Wenn die Funktion immer einen CString zurückgeben soll, warum definierst du sie dann als void?
    Desweiteren ist data nur local in der Funktion LoadLogFile... wie sieht denn der Buffer im Debugger aus? Vielleicht nicht sauber terminiert?

    Gruß



  • ok lag an der fehlenden terminierung. (Hätt ich auch selber drauf kommen können)

    Die Funktions sieht vieleicht bissel komisch aus weil ich am rum experimentieren bin.


  • Mod

    Du kannst mit CString::GetBuffer Dir direkt genug Speicher holen und direkt nach CString reinladen!


Anmelden zum Antworten