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.
-
Du kannst mit CString::GetBuffer Dir direkt genug Speicher holen und direkt nach CString reinladen!