OpenDocumentFile
-
@biter sagte in OpenDocumentFile:
Aber auch OpenDocumentFile("C:\Projekte\GLisp80" + DateiName); geht nicht. Also der absolute Pfad ...
Was ist
DateiName
? Was ist "geht nicht"?
-
Es kommt zur selben Fehlermeldung wie oben beschrieben. OpenDocumentFile("C:\Projekte\GLisp80" + DateiName); selbstverständlich mit doppelten . Die Datei liegt in C:\Projekte\GLisp80. Bei VS 2008/VS 2010 läuft alles ...
-
@biter sagte in OpenDocumentFile:
OpenDocumentFile("C:\Projekte\GLisp80" + DateiName);
'\'
s escapen ... oder'/'
nehmen.@Swordfish sagte in OpenDocumentFile:
Was ist
DateiName
?hast Du immer noch nicht beantwortet.
-
Selbstverständlich mit doppeltem Backslash, das wurde hier im Forum nur einfach angezeigt. DateiName ist eine unformatierte Text-Datei. Es muss sich um eine Neuerung bei VS 2017/2019 handeln.
-
@biter sagte in OpenDocumentFile:
Es muss sich um eine Neuerung bei VS 2017/2019 handeln.
Nein.
Was meinst Du eigentlich? CWinApp::OpenDocumentFile?
und nochmal:
@Swordfish sagte in OpenDocumentFile:
Was ist
DateiName
?Typ in deinem Programm.
-
Meine Anwendung ist eine MDI CEditView. Da werden zu Anfang die Child-Fenster mit OpenDocumentFile mit dem Text von Dateien gefüllt. Nein ? wieso geht es mit VS 2008/2010 ? CWinApp::OpenDocumentFile? Ja ! Was könnte man statt OpenDocumentFile verwenden ? DateiName ist ein CString.
-
Wie komme ich an die Assertions innerhalb von OpenDocumentFile ran ?
-
-
Stürzt bei OpenDocumentFile ab, obiges Programm. Leider habe ich noch keine Problemlösung dafür. Bei Google auch nicht. Das alte MFC-Programm pflege ich mit VS 2008, ansonsten arbeite ich mit C# .NET.
-
Was sagt denn die Windows Ereignisanzeige?
-
Stelle mich vielleicht dumm an, aber damit kenne ich mich nicht aus.
-
@biter
Solche Fehler können sehr gemein sein. Und da hilft nur systematisches Vorgehen. Es ist nicht auszuschließen das ein Fehler im Code ist, welcher erst unter neueren VS Versionen sichtbar wird.Daher bitte ich dich folgendes:
- Poste bitte hier exakt die Fehlermeldung. Eine Meldung ala "geht nicht" ist nicht sonderlich hilfreich.
- Überprüfe bitte den Aufrufparameter. Wie sieht der String "C:\Projekte\GLisp80" + DateiName aus? Da könnte auch "C:\Projekte\GLisp80Test.txt" herauskommen.
- Frage ins Blaue: Hast du afxOleInit() aufgerufen? Siehe
https://social.msdn.microsoft.com/Forums/windows/de-DE/2867e5bc-bf11-4dbf-8658-c1d1769f1def/runtime-error-mfc120ddll-bei-cwinappopendocumentfile?forum=visualcplusde
-
Der Aufrufparameter DateiName ist korrekt. Ich habe nun in InitInstance AfxOleInit() aufgerufen, weiss aber nicht genau wohin der Aufruf gehört. Und jetzt hängt sich das Programm auf.
-
Kann es vielleicht daran liegen, dass der obige Code ( hier ganz oben ) sich selber in InitInstance befindet ?
-
Ernsthaft: Leck mich.
-
Nicht besonders hilfreich !!!
-
Was geht nicht?
-
Ohne AfxOleInit(): Bei OpenDocumentFile("C:\Projekte\GLisp80\" + DateiName); ( Backslashes doppelt !, Datei existiert ! ) stürzt das Programm ab, Fehlermeldung: Debug Assertion failed d\agent_work\4\s\src\vctools\VC7libs\Ship\ATLMFC\Scr\MFC\filelist.cpp line 221.
Bei Hinzufügung von AfxOleInit() am Anfang von InitInstance, hängt
das Programm. Ich komme an die Assertion auch garr nicht ran !
-
Starte das Programm aus VS mit
[F5]
und antworte bei dem Crash mit "Abbrechen/Cancel". Dann sollte Dir der debugger zeigen was los ist.
-
Bei VS 2008/2010 läuft alles, wohl ein Fehler der erst bei VS 2019 bemerkt wird. Es ist eine MDI CView als CEditView, und bei InitInstance werden aus einer Datei, Dateienamen ausgelesen die ihreseits unformatierten Text enthalten. Und diese Textdateien sollten mit OpenDocumentFile in die Child-Fenster eingetragen werden.