Variablen konvertieren



  • 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!
    👍



  • 🙂



  • 🙂


Anmelden zum Antworten