MFC- Textdateien

Hallo

Ich bräuchte Eure Hilfe im Bereich MFC. Also folgendes Problem:
Ich habe eine Dialogfeldbasierende MFC-Anwendung angefangen. Der
Dialog enthält eine Schaltfläche und ein Eingabefeld. Das Ziel dieser
Anwendung ist es, Textdateien einzulesen. Mit folgenden Code habe ich
es als erstes ausprobiert:

void CDateiLesenDlg::open_mouth:nButton1() //Datei Lesen
{
char str[1000];
CFileDialog m_dlgFile( TRUE );
if( m_dlgFile.DoModal() == IDOK )
{
m_pathname = m_dlgFile.GetPathName();
}
CFile datei( m_pathname, CFile::modeRead );
datei.Read( str, sizeof( str ) );
datei.Close();
m_strEdit1 = str;
UpdateData( FALSE );
}

Aber folgendes Problem stellt sich mir mit diesem Code in den Weg.
Wenn ich jetzt eine .txt-Datei öffne, stehen am Ende des Textes
solche Zeichen ÌÌÌÌÌ. z.B: in der Text-Datei steht Christoph, so wird
Christoph normal angezeigt aber danach stehen entsprechend der char
Deklarierung also 1000 solche Zeichen ÌÌÌÌÌ. Ich häng mich jetzt
schon 2 Wochen dahinter, komm aber leider auf keine Lösung. Es würde
mir sooo helfen wenn Ihr vielleicht einen Lösungsvorschlag für dieses
Problem hast. Natürlich wäre ich über einen anderen Lösungsvorschlag
auch sehr froh.

Also will ich mich schon mal vorrraus bedanken. Und hoffe ich nehm
nicht zu viel von Eurer Zeit in Anspruch.

Mit freundlichen Grüßen
Christoph

könnten meiner Meinung nach Leerstellen bzw. Zeilenschaltungen sein. Probier doch mal

str.TrimLeft() ;
str.TrimRight() ;
m_strEdit1 = str;

ist denke ich ein Versuch wert.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Christoph,
Ich habe genau dasselbe Problem, allerdingst nur wenn ich den Text in einen Editfeld anzeigen will. Da der Text von einer MessageBox fehlerfrei angezeigt wird, scheint das Problem also beim Editfeld zu liegen. Versuch doch mal anstatt des Editfeldes ein Richedit zu verwenden. Hoffe das dir das beim lösen des Problems weiterhilft.

Grüße,
Daniel Raffler

void CDateiLesenDlg::open_mouth:nButton1() //Datei Lesen
{
char str[1000];
CFileDialog m_dlgFile( TRUE );
if( m_dlgFile.DoModal() == IDOK )
{
m_pathname = m_dlgFile.GetPathName();
}
CFile datei( m_pathname, CFile::modeRead );
datei.Read( str, sizeof( str ) );
datei.Close();
m_strEdit1 = str;
UpdateData( FALSE );
}

ich würde mal volgenden test machen:

UINT nActual = 0;
.
.
.
nActual = datei.Read(str,sizeof(str));
str[nActual] = 0;

Read gibt nämlich die anzahl an eingelesenen zeichen zurück und an der Stelle würde ich einfach mal den string terminieren, denn dann hast du auf alle fälle die Daten, die read eingelesen hat.

MfG
Torben