[SOLVED]fstream öffnen geht nicht mehr
-
Ich habe ein Programm mit einem öffnen und speichern Dialog. Beides abwechselnd funktioniert bestens. Jetzt habe ich aber noch einen anderen Menüpunkt, der ebenfalls etwas in eine Datei schreibt. Öffne und speicher ich nichts, funktioniert es auch wunderbar. Tu ich es aber doch, lässt sich die gewünschte Datei nicht mehr öffnen/erstellen. Ich habe es auch schon mit fopen_s, usw. probiert. Es werden alle Dateien ordnungsgemäß geschlossen nach dem Laden oder Speichern und es geht auch, dass man 2 Mal hintereinander etwas speichert und auch lädt. Ich denke mal, dass der Source da nicht sonderlich viel helfen wird (Ich öffne, schreibe/lese und schließe). Hat vielleicht jemand aus dem Stehgreif eine Idee womit das zusammenhängen könnte? Ich verzweifel langsam daran.
-
Also mir würde Code sehr weiterhelfen, da es normalerweise keine Probleme geben sollte...
bb
-
Nachdem das hier aufgerufen wird, tritt das Problem auf.
// Datei öffnen Dialog if (GetOpenFileName(&ofn) == TRUE) file_in.open (ofn.lpstrFile, std::ios::in); if (file_in.is_open()) SendMessage (hwndList, LB_RESETCONTENT, NULL, NULL); std::getline (file_in, buffer); file_in.close(); /* ... Verarbeitung des Buffers ... */Das ist die Stelle wo das Problem auftritt
/* Buffer wird initialisiert */ file_out.open ("bla.rtf", std::ios::out); file_out.write (buffer.c_str(), buffer.size()); file_out.close ();Ist doch alles in Ordnung oder? Mehr mache ich mit den Streams auch nicht.
-
Da fällt mir ein ich habe vorhin noch folgendes Testprogramm geschrieben:
#include <iostream> #include <fstream> #include <string> int main (void) { std::fstream file; std::string buffer = "test"; file.open ("test.txt"); if (!file.is_open()) { std::cout << "couldn't open encode.txt!"; std::cin.sync(); std::cin.get(); return 0; } file.write (buffer.c_str(), buffer.size()); file.close (); return 0; }Ergebnis: couldn't open encode.txt!
EDIT: Reboot hat übrigens auch nichts gebracht.
-
Super, durch den Dialog wurde das Working Directory geändert. Hat sich erledigt.