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." Zitatende

    C-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 ifstream und ofstream benutzt, dann kannst du die states weg lassen.


Anmelden zum Antworten