Zeiger-Problem ("read"-Fehler)
-
Hoi...
Also, ich hab ne Funktion, welche durchs Menü aufgerufen wird. Dann soll sich ein CFontDialog öffnen, der dann die Schrift im View-Bereich ändert, wo bereits ein Text steht.
Die besagte Funktion enthält Folgendes:
m_FontDialog->DoModal(); m_Font.DeleteObject(); m_Font.CreateFont(m_FontDialog->GetSize(), 0, 0, 0, m_FontDialog->GetWeight(), m_FontDialog->IsItalic(), m_FontDialog->IsUnderline(), m_FontDialog->IsStrikeOut(), DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, m_FontDialog->GetFaceName() ); m_FontDialog->SetFont(&m_Font, TRUE); OnDraw(GetDC());m_Font ist ein CFont-Objekt, m_FontDialog ein Zeiger auf ein CFontDialog-Objekt. Wenn ich während der Laufzeit des Programms die Funktion übers Menü aufrufe, erhalte ich "Anweisung in ... verweist auf Speicher in ... Der Vorgang "read" konnte nicht .... ausgeführt werden..."

Habe den Eindruck, dass das am letzten Parameter des CreateFont-Aufrufes liegt. Kann mir das wer auf die Sprünge helfen
?thx

-
Kann mir niemand helfen :(?
-
hast du schon debuggt? dann weisst du genau, an welcher stelle es hakt und welche werte zu diesem zeitpunkt vorhanden sind, bzw. fehlen..
-
Bis auf Assembler-Code zeigt der mir nichts an?
-
Dann zeig uns den Callstack...
-
TEXTVIEWER! 00401c32() MFC42! 73d323d8() MFC42! 73d322ae() MFC42! 73d32c25() MFC42! 73d32ba2() MFC42! 73d32976() MFC42! 73d329d7() MFC42! 73d31cea() MFC42! 73d31c73() MFC42! 73d31bfb() MFC42! 73d31bba() USER32! 77d13a5f() USER32! 77d13b2e() USER32! 77d13d6a() USER32! 77d141fd()Das?? Kenne mich danicht so gut aus

-
Ja, das ist der Callstack. Ist da oberhalb noch was?
Was wird angezeigt, wenn du auf die Zeile mit TEXTVIEWER doppelklickst?
Was liefert GetFaceName konkret zurück?
-
Das???

00401C32 mov edx,dword ptr [eax]
-
Was ist mit den beiden anderen Fragen?
-
Achso sorry!! Also drüber ist nichts, die Funktion liefert nen CString.
-
Was gibt CreateFont zurück?
-
BOOL
-
simon.phoenix schrieb:
BOOL
Sehr witzig.
Ich meine natürlich den konkreten Rückgabewert deines Aufrufs...

-
Also Kommando zurück... Der Fehler kommt schon mit dem Aufruf von DoModal();
Obwohl wie bereits gesagt, der CFontDialog mit
CFontDialog *m_FontDialog;deklariert wurde...
-
Allokierst du denn auch irgendwo eine CFontDialog-Instanz? Wenn nicht, ist es logisch, dass das abschmiert.
-
Ok, Problem gelöst!
Vielen Dank
Edit: Mann bin ich dumm :D.