Problem bei Speichern in Runtime
-
hi leute
hab ein schwerwiegendes problem, denn wenn ich in meinem programm meinen button beende drücke, soll eine MessageBox erscheinen, in dem ich auswählen kann: speichern jaoder nein
wenn ich auf nein klicke, schließt sich meine anwendung, das iss in ordnung, aber wenn ich auf ja klicke, dann erscheint folgender fehler:
*Im Projekt .exe ist eine Exception der Klasse EFCreateError aufgetreten. Meldung: 'Datei kann nicht erstellt werden'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
das gleiche problem habe, wenn ich ein neues dokument öffnen möchte, genau der selbe verlauf
Quellcode von Beenden:
void __fastcall TFlex_DB::Beenden1Click(TObject *Sender) { if ( Application -> MessageBox("Wollen Sie schließen und speichern?", //es erscheint Fenster --> Wollen Sie schließen und speichern "Schließen Hinweis", MB_ICONQUESTION | MB_YESNO) == IDYES) //zum auswählen --> JA ; NEIN RichEdit1 -> Lines -> SaveToFile(SaveDialog_Beenden -> FileName); //von RichEdit1 wird alles gespeichert Close(); //Die Anwendung wird geschlossen }
Quellcode von Neu:
void __fastcall TFlex_DB::Neu1Click(TObject *Sender) { if ( Application -> MessageBox("Wollen Sie schließen und speichern?", "Schließen Hinweis", MB_ICONQUESTION | MB_YESNOCANCEL) == IDYES) RichEdit1 -> Lines -> SaveToFile(SaveDialog_Neu -> FileName); RichEdit1 -> Clear(); //hier wird nur RichEdit geleert und nicht //die anwendung geschlossen }
-
ich hoffe ihr könnt mich auf einen fehler im quellcode hinweisen, denn ich bin mit meinem latein am ende
danke für die hilfe
lg Master-T
-
Hi,
kann es sein, dass SaveDialog->FileName in diesen Codeabschnitten
nicht bekannt ist?mfg
kpeter
-
@kpeter diese zeile mit SaveDialog -> FileName hab ich auch woanders un da funktioniert es einwandfrei
deswegen wundert es mich auch, das es hier nicht klappt
-
Dann musst du den FileName in einem String speichern. Wenn der Dialog geschlossen wird, und dieser Wert wird
nicht gespeichert, geht er verloren.Also in der Header-Datei:
String Filename;
In der cpp:
if ( SaveDialog->Execute()) { Filename = SaveDialog->FileName; // jetzt steht ein Wert in Filename. Dieser bleibt erhalten bis Programmende oder er wird // wieder überschrieben. }
In deinen Codeabschnitte schreibst du nun nicht SaveDialog_Beenden -> FileName, sondern nur Filename.
mfg
kpeter
-
ich danke dir
es funktioniert ohne probleme