Dateien lesen/speichern?



  • Hey,
    also wir versuchen gerade ein umfangendes Programm für BTA, CTA etc. zu entschickeln.
    Dazu haben wir ein Periodensystem und wenn man dort auf ein Element klickt, öffnet sich ein neues Fenster. Jetzt zum eingentlichen.

    Also in diesem Fenster "Details", soll jetzt der Inhalt aus einer Textdatei eingelesen werden, die wie folgt aufgebaut ist:

    Wasserstoff
    H
    1
    Schmelzpunkt
    Siedepunkt
    etc.

    Alle diese Werte können als String ausgegeben werden. Alle Dateien sind hinterlegt und jede Zeile sollte in eine eigene Variable abgespeichert werden, damit ich sie in dem jeweiligen Feld austragen kann.

    Auf der Seite gibt es noch einen Button "Bearbeiten". Wenn man auf ihn draufklickt, kann man die Felder bearbeiten.
    Wenn man Änderungen vorgenommen hat, sollen diese in der Datei abgespeichert werden und zwar genauso, wie sie eingelesen wurden.

    Ist das möglich? Hat vll jemand eine Idea wie ich das am besten lösen kann?
    Ich habe keine Ahnung wie ich die Daten aus einer Datei auslesen kann, geschweige denn in eine speichern.

    Schon mal danke für die Hilfe



  • hat jemand eine Ahnung wie ich eine Datei zeilenweise auslesen kann?



  • Inetwa so:

    std::ifstream i("file.txt");
    std::string str;
    while (std::getline(i, str))
    {
        std::cout << str << std::endl;
    }
    


  • oder mit MFC

    CStdioFile inFile;  // inFile = Dateiname
    	inFile.Open( tmpFile, CFile::modeRead | CFile::typeBinary );
        inFile.SeekToBegin();
    
    	while( inFile.ReadString( Buffer ) )
    ...
    


  • Ja, oder mit der Suchfunktion des Forums 😉

    SCNR



  • CString tmpFile;
        tmpFile = "Text.txt";
        CStdioFile inFile;  // inFile = Dateiname
        inFile.Open( tmpFile, CFile::modeRead | CFile::typeBinary );
        inFile.SeekToBegin();
    
        while( inFile.ReadString( Buffer ) )
        {
            ?????
        }
    

    Also mein Quelltext würde jetzt so aussehen wie kann ich den jetzt die einzelnen Zeilen in Variablen speichen? Irgendwie muss er ja was zurückgeben oder so. Ich blicke da noch nicht so recht durch wie das funktionieren soll



  • CString Buffer;
    

    Buffer ist also ein CString. Und damit hast du die gelesene Zeile in einer Variable.

    grüssle 🙂



  • Hat jemand eine Ahnung warum das nicht funktioniert?

    ofstream Datei(m_Dateiname);
    
    	if(!Datei.good())
    	{
    	    MessageBox("Die Datei zum Speichern konnte nicht geladen werden!","Fehler", MB_OK | MB_ICONINFORMATION);
    	}
    
    	Datei<< m_Name;
    	Datei<< "\n";
    	Datei<< m_Nachname;
    	Datei<< "\n";
    	Datei<< m_Text;
    	Datei<< "\n";
    
    	Datei.close();
    

    Also er bekommt einen Dateinamen und alles. In der Vaibale steht auch Inhalt drinne, aber er nimmt die einfach nict.

    Wenn ich das jedoch so schreibe, dann läuft das 1a.

    Datei<< "Angela";
    	Datei<< "\n";
    	Datei<< "Merkel";
    	Datei<< "\n";
    	Datei<< "ist geil";
    	Datei<< "\n";
    


  • aber er nimmt die einfach nict.

    Was heisst das?????

    -> Wenn m_Name etc. std::string / std::wstring sind, dann kannst Du versuchen m_Name.c_str().

    -> Ich denke es gibt keine Überladung von << für std::string / std::wstring.



  • Ich meine damit, dass er den Inhalt von m_Name nicht in die Datei schreibt. Sondern nur wenn ich einen String hinterlege.



  • Lenni schrieb:

    Ich meine damit, dass er den Inhalt von m_Name nicht in die Datei schreibt. Sondern nur wenn ich einen String hinterlege.

    m_Name ist eine CString Variable.



  • Lenni schrieb:

    Hat jemand eine Ahnung warum das nicht funktioniert?

    ofstream Datei(m_Dateiname);
    
    	if(!Datei.good())
    	{
    	    MessageBox("Die Datei zum Speichern konnte nicht geladen werden!","Fehler", MB_OK | MB_ICONINFORMATION);
    	}
    
    	Datei<< m_Name;
    	Datei<< "\n";
    	Datei<< m_Nachname;
    	Datei<< "\n";
    	Datei<< m_Text;
    	Datei<< "\n";
    
    	Datei.close();
    

    und wo wird m_Name & Co mit Werten aus der Datei gefüllt?

    grüssle 🙂



  • lang lebe die Dummheit 😃 😃
    Ich habe UpdateData(true) vergessen 😛


Anmelden zum Antworten