Veröffentlicht 4. Oktober 200222 j Wenn ich in meinen Dialog eine RichEdit Box einfüge läuft das Programm nicht mehr, auch wenn ich dieser Box gar nichts zu tun gebe. Nehme ich das Teil wieder raus läuft es wieder. Woran liegt denn das? Es kommen diese Fehlermeldungen: "ntdll.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\kernel32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. Geladene Symbole für "C:\WINDOWS\system32\MFC42D.DLL" Geladene Symbole für "C:\WINDOWS\system32\MSVCRTD.DLL" "C:\WINDOWS\system32\gdi32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\user32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\advapi32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\rpcrt4.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. Geladene Symbole für "C:\WINDOWS\system32\MFCO42D.DLL" "C:\WINDOWS\system32\mfc42loc.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\comctl32.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\uxtheme.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\msvcrt.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. "C:\WINDOWS\system32\MSCTF.dll" wurde geladen. Es wurden keine entsprechenden Symbolinformationen gefunden. Thread 0x788 wurde mit Code 0 (0x0) beendet. Das Programm "C:\Programme\Microsoft Visual Studio\MyProjects\container\Debug\container.exe" wurde mit Code 0 (0x0) beendet.
4. Oktober 200222 j Versuchs doch mal mit nem AfxInitRichEdit() in der InitInstance() deiner Anwendung. Goos
4. Oktober 200222 j das bringt es auch leider auch nicht, ich habe es in den OnInitDialog reingetan. Der Verlauf des Problems hat sich nicht geändert. Mein Dialog taucht für n Bruchteil einer Sekunde auf dem Bildschirm auf, und dann ist er auch schon wieder im C++ Programm. Nehme ich das RichEdit raus läuft es normal. Krank...
4. Oktober 200222 j Du sollst das ja auch nicht in den OnInitDialog() reinschreiben!!! ...ich hab doch gesagt ins InitInstance().......und auch dort bitte moeglichst an den anfang. Alles andere waer zu spaet ...und wenn du dein RichEdit nicht bei zeiten initialisierst, dann laeufts halt nicht...so einfach ist das Goos
4. Oktober 200222 j Oops, da war ich schneller am Lesen als beim Denken, Danke für den Hinweis. Jetzt läuft es.
4. Oktober 200222 j und doch noch ein Problem: Ich weise dem RichEdit eine CString Variable zu, die ich in einer for Schleife fülle, doch sobald er das erste mal in die Variable schreiben will stürzt er mit einer Access Violation ab. Das erste Wort steht in diesem Moment schon in der Variable drin, kommt er mit der Schleife nicht klar? oder muss ich in der InitInstance die Variable mit übergeben? Tut mir leid für diese vielleicht dummen Fragen, bin halt ein dummer Anfänger
4. Oktober 200222 j Kannst dich dazu vielleicht noch n bissl naeher aeussern oder das entsprechende stueckl vom Code posten?.....So auf Anhieb kann ich sonst grad nix zu sagen. Goos
4. Oktober 200222 j Ich führe das Programm im Debug Modus aus, ich habe mehrere Schleifen, nach der ersten for Schleife stürzt er ab: ______________________________________________________________________________________________________________________________________________________ CODE: { H=0; B=0; T=0; for(H;H<5;H++) //Im Array Bool nContainer[5][5][5] alles auf false setzen { nContainerHBT[H][T]=false; for(B;B<5; B++) { nContainerHBT[H][T]=false; for(T;T<5; T++) { nContainerHBT[H][T]=false; } } } // genau hier ist der Absturz // H=0; B=0; T=0; m_EingabeH=3; m_EingabeB=3; m_EingabeT=3; //UpdateData(true); for(H;H<m_EingabeH;H++) //je nach Eingabe das Array auf true setzen { nContainerHBT[H][T]=true; for(B;B<m_EingabeB;B++) { nContainerHBT[H][T]=true; for(T;T<m_EingabeT;T++) { nContainerHBT[H][T]=true; } } } H=0; B=0; T=0; for(H;H<5;H++) //Array auf true / false auslesen { if (H<m_EingabeH) //if(nContainerHBT[H][T]=true) { test=test +" ;Ja"; //test+=" ;Ja"; } else test=test + " ;Nein"; //test+=" ;Nein"; for(B;B<5;B++) { if(B<m_EingabeB) //if(nContainerHBT[H][T]=true) { test=test +" ;Ja"; //test+=" ;Ja"; } else test=test + " ;Nein"; //test+=" ;Nein"; for(T;T<5;T++) { if(T<m_EingabeT) //if(nContainerHBT[H][T]=true) { test=test +" ;Ja"; //test+=" ;Ja"; } else test=test + " ;Nein"; //test+=" ;Nein"; } } } // UpdateData(true); } :CODE _____________________________________________________________________________________________________________________________________________________ Der Debugger zeigt mir die Messagebox " Unbehandelte Ausnahme in container.exe (MFC42.DLL): 0xCD0000005: Access Violation" und springt dann an diese Stelle: ______________________________________________________________________________________________________________________________________________________ CODE: CString AFXAPI operator+(const CString& string, LPCTSTR lpsz) { ASSERT(lpsz == NULL || AfxIsValidString(lpsz)); CString s; s.ConcatCopy(string.GetData()->nDataLength, string.m_pchData, CString::SafeStrlen(lpsz), lpsz); return s; } :CODE ______________________________________________________________________________________________________________________________________________________ Ich hoffe du hast dazu ne Idee... Danke für deine Bemühungen
4. Oktober 200222 j Original geschrieben von Christoph F. und doch noch ein Problem: Ich weise dem RichEdit eine CString Variable zu, die ich in einer for Schleife fülle, doch sobald er das erste mal in die Variable schreiben will stürzt er mit einer Access Violation ab. Schulligung, aber wo ist bitte bei dem Code den du gepostet hast der Bezug zum RichEdit? .....oder hat das soweit noch nichts konkretes damit zutun? Ach und schau doch bitte mal mit dem Debugger, wo es genau abstürzt....dort wo du es hingeschrieben hast kanns schlecht sein, da in der Zeile ja gar kein Code steht Dummerweise sollte es aber zumindest bis zu der Stelle an der du das mit dem Absturz geschrieben hast problemlos durchlaufen. Irgendwie vermiss ich da aber auch noch irgendwo die Deklaration von H,B,T und nContainerHBT.....oder sind das schlecht benannte Members? Goos
4. Oktober 200222 j Hier erstelle ich die Variablen, sind wohl schlecht benannt. ... ___________________________________________________________________________ CODE: class CContainerDlg : public CDialog { // Konstruktion public: int B; int T; int H; int m_EingabeB; int m_EingabeT; int m_EingabeH; //char lcrtestaus; //char lcausgabe; bool nContainerHBT[5][5][5]; CContainerDlg(CWnd* pParent = NULL); // Standard-Konstruktor // Dialogfelddaten //{{AFX_DATA(CContainerDlg) enum { IDD = IDD_CONTAINER_DIALOG }; CString test; //Hier die Variable test, fürs RichEdit //}}AFX_DATA // Vom Klassenassistenten generierte Überladungen virtueller Funktionen //{{AFX_VIRTUAL(CContainerDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL :CODE ___________________________________________________________________________ Das Programm stürzt nach der Schleife ab, der gelbe Pfeil steht genau auf "B=0;", ich denke aber das er weiter unten, am Anfang der nächsten Schleife abstürzt und nur den gelben Pfeil nicht aktualisiert, oder?
4. Oktober 200222 j zum gelben Pfeil: der steht schon vorm Absturz da, dann drück ich noch einmal F5, dann kommt die Fehlermeldung. Christoph
4. Oktober 200222 j Zuerst wuerd ich an deiner Stelle schonmal die Schleifen aendern, da du in deinen Schleifen wohl nicht alle Elemente erwischt. Die erste wuerd dann in etwa so aussehen: for(H;H<5;H++) //Im Array Bool nContainer[5][5][5] alles auf false setzen { for(B = 0 ;B<5; B++) { for(T = 0;T<5; T++) { nContainerHBT[H][B][T]=false; } } } [/PHP] Goos
4. Oktober 200222 j das solltes dann besser anders versuchen...ich wuerd dir dazu raten ein Control Member zu erstellen. Dann kannst das etwa in folgender Art und Weise machen: m_rich waer Control Member von deinem Rich Edit CString test m_rich.GetWindowText(test); test = test +" ; bla"; m_rich.SetWindowText(test); [/PHP] Goos
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.