Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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...

Geschrieben

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 :D

Goos

Geschrieben

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 ;)

Geschrieben

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

Geschrieben
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 :D

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

Geschrieben

Hier erstelle ich die Variablen, sind wohl schlecht benannt. :rolleyes: ...

___________________________________________________________________________

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?

Geschrieben

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

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...