Fehler beim Speichern einer Zahl in Datei
-
Hallo allerseits,
nun tüftel ich schon einige Stunden an einem kleinen Problem und kriege es nicht hin.
Ich möchte in meinem Programm für jeden Vorgang eine Nummer vergeben, die in einer txt-Datei gespeichert wird.
Diese Zahl wird auch gelesen, um 1 hochgezählt, aber beim Speichern bekomme ich eine Fehlermeldung.
Was mache ich hier falsch??C-Bär
fstream optionen; int Auftragsnummer; optionen.open("C:\\Optionen.txt",ios_base::in|ios_base::out); if (!optionen.good()) ShowMessage("Fehler1 beim Öffnen"); optionen>>Auftragsnummer; //Nummer lesen Auftragsnummer++; optionen<<Auftragsnummer; //neue Auftragsnummer speichern optionen.flush(); if (!optionen.good()) ShowMessage("Fehler beim Schreiben"); optionen.close();
-
optionen.open("C:\\Optionen.txt");reicht.
Und im übrigen überleg dir mal, was passiet, wenn du mit Notepad eine Datei öffnest und dann in einer anderen Instanz von einem Editor die Datei nochmal öffnest und dann speichern willst. (ohne die erste zu schliessen).
Du machst da genau das gleiche und das ist natürlich nicht sehr gescheit.
btw:
Das nächste mal bitte die Fehlermeldung posten!
-
Hallo drakon,
ich verstehe nicht ganz was Du meinst.
In Zeile 4 öffne ich die Datei zum lesen und schreiben, dann die Bearbeitung (lesen und schreiben) und in Zeile 11 schließe ich die Datei.
Da gibt es keine zweite Instanz oder so.
Ich will ja gerade vermeiden, das ein anderes Programm auf die Datei zugreifen kann bevor die Variable zurück geschrieben wurde.Zu fstream steht in "C++ mit dem Borland C++Builder" Seite 351:
"Obwohl ein fstream immer die Funktionen zum Lesen bzw. Schreiben enthält,
ist ihr Aufruf ein Fehler, wenn beim Öffnen nicht der entsprechende Modus
gesetzt wurde." ZitatendeC-Bär
-
Sorry, das mit dem weglassen war Mist. Ich meinte ich würde es nach diesem Schema machen:
int zahl = 0; std::ifstream f ("hmm.txt"); f >> zahl; ++zahl; std::ofstream o ("hmm.txt"); o << zahl;Wenn du
ifstreamundofstreambenutzt, dann kannst du die states weg lassen.