doofe Frage? "speichern unter"
-
Ich hab in euren Augen sicher ne doofe Frage...
Ich erstelle mit
CFileDialog Dlg(FALSE,_T("wrl"), _T("*.wrl"), OFN_OVERWRITEPROMPT, Filters);einen "speichern unter" Dialog... wähle ich aber hier eine schon vorhandene Datei aus, die dann überschrieben werden soll, schmiert das Programm ab, bzw steckt fest... Weiß vielleicht jemand was ich falsch mache?
Vielleicht noch dazu... ich arbeite im Programm mit Stdiofiles, schließe diese aber am Ende definitiv wieder.
-
Du meinst sicher FILE*-Zeiger, oder? Tja, da hast du ein Problem, denn die sind ein bisschen veraltert. Vielleicht solltest du dich erst noch ein bisschen mit den Klassen CFile und CArchive beschäftigen, oder du machst folgendes:
CFileDialog MyDlg(/*TRUE oder FALSE, was du haben möchtest*/); MyDlg.DoModal(); // Und wenn der Benutzer eine Datei ausgewählt hat, hast du jede Mange Hilfsfunktionen für das Objekt MyDlg zur Verfügung.Was in Dreiteufelsnamen hast eigentlich vor, hmm?
-
lange Geschichte... mache grad mein Praktikumssemester vom Studium aus und musste nen Parser schreiben... Das mit DoModal mach ich ja danach schon:
TCHAR Filters[]= _T("VRML (*.wrl)|*.wrl|"); CFileDialog Dlg(FALSE,_T("wrl"), _T("*.wrl"), OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY, Filters); if (Dlg.DoModal()==IDOK) { Knew=Dlg.GetFileName(); }Aber irgendwie kommt dann immer eine Access violation reading location bla bla Meldung. Aber ich schließe alle Dateien, die ich öffne wieder. Daran kann es also nicht liegen

-
Benutz mal GetPathName() anstatt GetFileName(). Denn ich glaube nicht das du nur den Filenamen brauchst zum weiterverarbeiten, sondern bestimmt den ganzen pfad zur Datei. Aber das ist nur so eine Vermutung.
-
Lies die Doku.
Filters muss mit einem doppelten || abgeschlossen werden!
Ansonsten schau Die die Position an, an der es in der MFC kracht. Dann wirst Du sehen was hier schief geht. Evtl. auch den Callstack ansehen.