|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 17.10.2002, 11:03 Titel: Unbehandelte ausnahme in cxBLABLABLA |
|
|
Also, ich hab ein Programm, ist ja logisch. Da hab ich ne Fehlerfunktion erstellt, die Einen Standarttext und den Namen der Methode und des Funktionsaufrufs ausgeben soll, in der der Fehler auftrat. Ich füge die einzelnen Strings dann mit "sprintf" in einen ein, im Debugger kann ich dann sehen das alle Strings einen Wert haben. Wenn die Zeile jetzt aber ausgeführt wird, meldet der Compiler: "Unbehandelte Ausnahme in cx000005 Acces Violation" (Ich bin mir bei der Anzahl der Nullen nicht sicher.) . Dann verändert sich das Dokumentfenster und zeigt komische Zeilen an. An der Folgenden Zeile steht ein Gelber Pfeil:
"004053E4 mov byte ptr [edx],al"
Was kann ich machen? |
|
Nach oben |
|
|
Michael JLI'ler
Anmeldedatum: 20.07.2002 Beiträge: 173 Wohnort: Münster / NRW Medaillen: Keine
|
Verfasst am: 17.10.2002, 12:38 Titel: |
|
|
DA gibts wohl nur eins: Code posten, ansonsten ist es schwer zu sagen, woran es liegen soll, da es 1000 gründe geben kann! _________________ Es geht auch ohne |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 17.10.2002, 13:36 Titel: |
|
|
Oh, hab vergessen den zu posten:
Code: |
int ErrorCode = 1;
char*Text;
const char* TextPart1 = "Es trat ein Fehler beim Ausführen des Programms -Power Chat- auf!\nEr Trat in der Funktion <";
const char* TextPart2 = "> auf.\nDer Fehlerhafte Funktionsaufruf lautet:";
const char* TextPart3 = ".\nDer Fehlercode lautet:";
const char* TextPart4 = ".\nBitte schicken Sie den Fehlercode an: VeruektesHuhn@gmx.de\nIch werde mich so schnell es geht um die Beseitigung\ndes Fehlers kümmern.\n";
ErrorCode = GetLastError();
sprintf(Text, TextPart1, Method, TextPart2, Function, TextPart3, ErrorCode, TextPart4);
MessageBox(hWnd, Text, "Fehler!", MB_OK|MB_ICONEXCLAMATION);
PostQuitMessage(0);
return -1;
|
Cu,
VH |
|
Nach oben |
|
|
VerruecktesHuhn Super JLI'ler
Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 17.10.2002, 13:47 Titel: |
|
|
Das ist aber nicht mein einziges Problem:
Das erzeugen eines DirectDraw7 Objektes schlägt fehl, aber der ErrorCode lautet 0, also Das die Funktion erfolgreich war.
Cu,
VH |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 17.10.2002, 13:58 Titel: |
|
|
Hallo,
das dein Code nicht funktioniert ist kein Wunder
Also
1. sprintf kopiert in den Speicherbereich, den du als erstes Argument angibst, dies ist bei dir Text1, der genau irgendwo hin zeigt, aber nicht auf gültigen Speicher.
2. Lies dir nochmal die Dokumentation zu sprintf durch. So geht es nicht.
3. ErrorCode ist ein int, kein char* wie soll das gehen?
4. Was ist Method und Function?
Alles in allem würde ich das Programm so ändern:
Code: |
const char* TextPart1 = "Es trat ein Fehler beim Ausführen des Programms -Power Chat- auf!\nEr Trat in der Funktion <";
const char* TextPart2 = "> auf.\nDer Fehlerhafte Funktionsaufruf lautet:";
const char* TextPart3 = ".\nDer Fehlercode lautet: ";
const char* TextPart4 = ".\nBitte schicken Sie den Fehlercode an: VeruektesHuhn@gmx.de\nIch werde mich so schnell es geht um die Beseitigung\ndes Fehlers kümmern.\n";
ErrorCode = GetLastError();
char TextErrorCode[32];
itoa(ErrorCode, TextErrorCode, 10);
char* Text = new char[strlen(TextPart1) + strlen(TextPart2) + ... + strlen(TextErrorCode) + 1];
sprintf(Text, "%s%s%s%d%s", TextPart1, TextPart2, TextPart3, ErrorCode, TextPart4);
MessageBox(hWnd, Text, "Fehler!", MB_OK|MB_ICONEXCLAMATION);
PostQuitMessage(0);
return -1;
delete[] Text;
|
Denk mal drüber nach Strings aus CString oder std::string zu verweden, da kann man solche Fehler nicht machen.
Christian |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|