Variablen konvertieren
-
Das ist C was du da verwendest!
Verwende die Klasse CFile (ist zwar nicht unbedingt notwendig).
Ließt du nur einen Buchstaben ein? Du hast die deklaration von der Variable "inhalt" nicht dazugeschrieben, und laut Fehlermeldung hast du ein char verwendet.
Beispiel:
char c = 'a'; CString str = c; m_Ausgabe.SetWindowText(str);willst du einen Text?
CString inhalt; //..... while(!feof(chatdatei)) { inhalt+=(fgetc(chatdatei)); } fclose(chatdatei);Vielleicht hilft´s
MFG, Sigi
-
Danke für eure Hilfe!!!
Jetzt funktionierts.....

-
öhm...
und nun hab ich habe versucht,
dass der eingegebene Text der .txt datei angehängt wird...... void CVersuch2Dlg::OnButton2() { //in datei schreiben TCHAR str[1000]; UpdateData( TRUE ); _tcscpy( str, m_Eingabe ); CFile datei( "chatdatei.txt", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite ); //ans ende der datei datei.Seek( 0L,CFile::end ); datei.Write( str, sizeof( str ) ); datei.Close(); } ...Und nun das Problem...
Nachdem ich zweimal etwas eingegeben hatte ( "hallo" und "welt") erschien beim laden des textes in die anwendung nur der erste text ("hallo").
Wieso? Nun, als ich die txt datei mit dem editor öffnete fand ich folgendes vor:hallo ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ[...viele Ì's weiter...]ÌÌÌwelt ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ[...und nochmal ne menge Ì's]
Hoffentlich habt ihr meine erklärung kapiert...
Bin ich unfähig, ein einfaches programm zu schreiben oder was?
schämgery14
-
Ich habs auch nicht so mit den Dateien

du hast immer die 1000 Zeichen deines Arrays in die Datei geschrieben. Die komischen Zeichen sind \0 wenn ich mich nicht täusche. Darum kannst du auch nur den ersten Teil bis zu den \0 einlesen.
UpdateData( TRUE ); //in datei schreiben CFile datei( "chatdatei.txt", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite ); //ans ende der datei datei.Seek( 0L,CFile::end ); datei.Write( m_Eingabe, sizeof( char )*m_Eingabe.GetLength() ); datei.Close();MFG, Sigi
-
Das is t wohl eine Frage wann du das delete schreibst.
Nach dem datei.Close(); dürfte es ok sein
-
Hab umgeändert. So läft´s immer

Hab das delete am ende der Methode stehen gehabt. Hat trotzdem nicht funktioniert. Weiß nicht warum.
TSCHAU, Sigi
-
ja, jetzt wird die txt datei richtig geschrieben...
Danke!!!aber:

Die txt datei ist jetzt in ordnung, aber wenn ich mit der Anwendung den text einlesen will, ist das ÌÌÌÌ - Problem wieder da

Es müssen also alle Ì's aus dem CString gelöscht werden, bevor dieser ins Textfeld geladen wird.
Weiss grad jemand wie?
*grübel,lern,büffel*
-
Poste mal deinen Source mit dem du die txt ausließt.
In der Datei sind keine Sonderzeichen mehr.
Vermudlich ließt du wieder mit einem char[1000] ein, oder.
-
Ja, ich lese sie mit nem char [1000] aus.
Hier nochmal alles:
... //datei einlesen void CVersuch2Dlg::OnButton1() { TCHAR str[1000]; CFile datei( "chatdatei.txt", CFile::modeRead ); datei.Read( str, sizeof( str ) ); datei.Close(); m_strEdit1 = str; UpdateData( FALSE ); // Variablen ---> Felder } //datei schreiben void CVersuch2Dlg::OnButton2() { TCHAR str[1000]; UpdateData( TRUE ); _tcscpy( str, m_strEdit2 ); // kopiert m_strEdit2 in str CFile datei( "chatdatei.txt", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite ); datei.Seek( 0L,CFile::end ); datei.Write( m_strEdit2, sizeof( char )*m_strEdit2.GetLength() ); datei.Close(); } ...
-
So am Einfachsten:
void Lesen() { CStdioFile file; if(file.Open("C:\\Datei.txt",CFile::modeRead)) { CString line; CString text; while(file.ReadString(line)) text += line + "\r\n"; // Text setzen bzw. UpdateData } } void Schreiben() { CStdioFile file; if(file.Open("C:\\Datei.txt",CFile::modeCreate | CFile::modeWrite)) { CString text; // text holen bzw. UpdateData file.WriteString(text); } }Statt der Variable 'text' kannst du natürlich auch deine Membervariable m_strEdit1 nehmen.
-
Hier noch mein Senf (weil ich ihn schon mal vorbereitet habe
)void CTesttestDlg::OnButton2() //READ { CFile datei( "chatdatei.txt", CFile::modeRead ); for(unsigned long i=0;i<(datei.GetLength()/sizeof(char));i++) { char c = '\0'; datei.Read( &c, sizeof(char)); m_strEdit1 += c; } datei.Close(); UpdateData( FALSE ); // Variablen ---> Felder } void CTesttestDlg::OnButton3() //WRITE { UpdateData( TRUE ); CFile datei( "chatdatei.txt", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite ); datei.Seek( 0L,CFile::end ); datei.Write( m_strEdit2, sizeof( char )*m_strEdit2.GetLength() ); datei.Close(); }TSCHAU, Sigi
-
Danke für eure Hilfe!
-
@sigi:
nen kleinen fehler hat dein script doch noch

bevor die datei eingelesen wird, sollte man folgende zeile einfügen:
m_strEdit1="";Sonst verdoppelt sich der text ein bisschen....
tschüs,
und danke nochmal!

-

-
