Bitte helft mir! Wie speicher ich Text aus einer Textdatei in verschiedenen Datenelementen einer Datei?
-
Hallo,
Ich habe folgendes großes Problem. Habe eine Liste in der sich Objekte (einer neuen Klasse) mit jeweils 3 Daten von Personen befinden (also 3 Datenelemente in der Liste). Die Klasse mit den Objekten befindet sich in einer meiner Header-Dateien. Das Programm hat eine kleine grafische Oberfläche (erstellt mir C++ Borland Builder 6) auf der ich auch Textfelder haben die ich beschreiben kann (3 solche Textfelder in die ich neue Personendaten für ein Personenobjekt schreiben kann). Mit einem Button sollen diese Felder in dem Objekt gespeichert werden und gleichzeitig in einer Textdatei gespeichert werden können. In die Textdatei schreiben funzt ohne weiteres, allerdings funktioniert das mit dem Beschreiben eines Objekts nicht. Ich krieg es höchstens hin das alle Daten ins erste Datenelement geschrieben werden, aber nicht dass die Daten richtig in die einzelnen Datenelemente geschrieben werde.Auf einem anderen Button sollen die gespeicherten Daten aus der Textdatei auch in einem Objekt dieser Klasse gespeichert werden aber auch da landet alles wenn überhaupt im ersten Datenelement. Hab das mit getline(...) versucht aber da liest er halt eine Zeile und packt alles ins erste Datenelement. Öffne die Datei mit fstreams und lese/schreibe also über streams.
Die Stelle mit dem Auslesen der Datei hab ich so programmiert:
string daten; fstream yourfile("spenden.txt", ios::in); if(!yourfile) { cout << "Beim Öffnen der Backupdatei zum Lesen trat ein Fehler auf."; } else { while(!yourfile.eof()) { getline(yourfile,daten," "); (*Spenden).insert(daten); ++*Spenden; } }Kann mir jemand sagen wie ich die Werte aus den EditBoxen(Textfeldern) und der Textdatei richtig speichern kann?
Wäre sehr nett wenn ich noch heute Montag abend Antworten bekommen könnte, da die Zeit drängt.Vielen Dank im vorraus.
Voone
-
Hallo,
Wie hast du denn die Daten rausgeschrieben? Welchen Typ hat spenden (Deklaration)? Wenn die Daten mit Leerzeichen als Trenner geschrieben wurden geht in etwa sowas
struct Person { string d1, d2, d3; }; vector<Person> Personen; Person temp; while(!yourfile.eof()) { yourfile << temp.d1 << temp.d2 << temp.d3; if( !yourfile.eof()) Personen.push_back(temp); }
-
spenden hat den typ einer klasse. aber wenn ich auf die datenelemente einzeln zugreifen müsste es gehen, werde es gleich mal probieren (name-des-objektes.datenelement=wert oder wie mach ich das?)
hab jetzt noch das problem das ich den textinhalt von textfeldern (also einem edit-feld) nicht in strings speichern kann? woran kann das liegen?
mfg
Voone
-
Voone schrieb:
hab jetzt noch das problem das ich den textinhalt von textfeldern (also einem edit-feld) nicht in strings speichern kann? woran kann das liegen?
a) welches System? b) wie äußert sich das Problem ("geht nicht" reicht nicht aus)?
Wenn du mit MFC's CEdit arbeitest - GetLine() oder GetWindowText() liefert dir den Inhalt der Textbox.
-
Er verwendet den BCB. Da wird der Typ AnsiString verwendet. Folgendes geht
string test = Edit1->Text.c_str();