OpenDocumentFile
-
@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.
-
@Swordfish sagte in OpenDocumentFile:
Starte das Programm aus VS mit [F5] und antworte bei dem Crash mit "Abbrechen/Cancel". Dann sollte Dir der debugger zeigen was los ist.
Was daran hast Du nicht verstanden?
Willst Du eine ernsthafte Antwort?
-
Also mir ist das jetzt zuviel, ich habe genug Information geliefert !!! pflege mein Programm mit VS 2008/2010, und Tschüsss ....
-
-
Also würdest Du einfach mal den MFC Code ansehen. Dann siehst Du:
#ifdef UNICODE hr = _AfxSHCreateItemFromParsingName(lpszPathName, NULL, IID_IShellItem, reinterpret_cast<void**>(&psi)); #else { USES_CONVERSION; LPOLESTR lpWPath = A2W(lpszPathName); hr = _AfxSHCreateItemFromParsingName(lpWPath, NULL, IID_IShellItem, (LPVOID*)&psi); } #endif ENSURE(SUCCEEDED(hr));
Und beim ENSURE kommt der ASSERT.
Also was ist faul? hr ansehen.Offensichtlich schlägt SHCreateItemFromParsingName fehl. Also Parameter ansehen.
Wo ist Dein Problem?
Du hörst nicht zu und lieferst nicht!
Callstack wurde angefordert!
Wo ist der?Wenn Dir das zuviel ist, dann gehört Dir nicht geholfen.
ByeBye
-
CallStack:
mfc140d.dll!1e8d7feb() Unbekannt mfc140d.dll![Die unten aufgeführten Frames sind möglicherweise nicht korrekt und/oder fehlen, für "mfc140d.dll" wurden keine Symbole geladen.] Unbekannt [Externer Code]
GLisp.exe!CGLispApp::InitInstance() Zeile 205 C++
[Externer Code]
GLisp.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Zeile 26 C++
[Externer Code]
-
Dann befolge mal Visual Studio 2015: How to Step into MFC Framework Code (gilt aber nicht nur für 2015)...
-
Also ich bin jetzt nervlich, gesundheitlich überfordert, ist mir etwas zuviel, wenn Ihr einversanden seit, machen wir später weiter, Martin entschuldigung !
Könnte es sein dass es mit UNICODE zusammenhängt ? So dass OpenDocumentFile mit UNICODE bzw nicht, zurechtkommt ? TH69 dein Link schaue ich mir gleich an.
-
Könnte es sein, dass ich beim Installieren von VS 2019, einige Features nicht ausgewählt habe ?