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