Announcement

Collapse
No announcement yet.

Fehler Unbehandelte Ausnahme

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fehler Unbehandelte Ausnahme

    Hi,

    Ich habe ein Schwerwiegendes Problem. Wenn ich mein Programm starten möchte bekomme ich einen Ausnahmefehler. Könnte mir vieleicht jemand sagen, was ich dagegen machen kann?

    Follgender Fehler:

    Unbehandelte Ausnahme bei 0x10022c4f in Super_Engine_01.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x0f452452.

    Also es ist kein Kompelierungsfehler sondern er tritt erst auf wenn ich versuche das Spiel zu starten und wird durch ein WIndowsfenster mit einem Ausrufezeichen ausgegeben.

    Ich hab zwar eine ältere Version meines Programms als Sicherheitskopie allerdings wären dann mehrere Stunden arbeit dahin daher wüsste ich schon gerne, wo die Fehlerursache ist.

    Würde mich über Hilfe freuen

  • #2
    Dein Programm versucht an eine Stelle im Speicher zu schreiben, wo es keine Berechtigung hat.

    Üblicherweise sind dafür meist

    - falsch oder nicht initialisierte Zeiger
    - Zeiger mit falschem Inhalt

    die Ursache.


    Und das Wort heisst Compiler und compilieren
    Christian

    Comment


    • #3
      Code:
      // SetColorKey
      
      // Aufgabe: Transparente Farbe festlegen
      //
      void CSprite::SetColorKey (int R, int G, int B)
      {
        // Colorkey einstellen
        SDL_SetColorKey (m_pImage, SDL_SRCCOLORKEY, 
        SDL_MapRGB (m_pImage->format, R, G, B) );
      
      } // SetColorKey
      Beim debugging konnte ich feststellen das der Fehler in dieser Funktion steckt...

      Der dazugehörige Klassenheader ist:

      //
      Code:
      #ifndef SPRITE_HPP
      #define SPRITE_HPP
      
      #include "Framework.h"
      
      class CSprite
      {
        public:
          CSprite ();
          ~CSprite ();
      
          void Load        (const string sFilename);
          void Load        (const string sFilename, int NumFrames,
                            int FrameWidth, int FrameHeight);
      	void Load_Backgroundmap (const string Filename,int FrameWidth, int FrameHeight);
      
          void SetColorKey (int R, int G, int B);
          void SetPos      (float fXPos, float fYPos);
          
      	void Render      ();
          void Render      (float fFrameNumber);
      	void Render_BackgroundMap (class CPlayer &Koordinaten);
      	void Render_Gegner  (float fFrameNumber, int XScreenMin, int XScreenMax, int YScreenMin, int YScreenMax,  int X1, int Y1 );
      
          SDL_Rect GetRect () {return m_Rect;}
      
        private:
          SDL_Surface *m_pScreen; // Zeiger auf den Screen des Frameworks
          SDL_Surface *m_pImage;  // Das eigentliche Bild des Sprites
          SDL_Rect m_Rect;        // Rect des Sprites
          SDL_Rect m_FrameRect;   // Ausschnitt für Animationsphase
          int m_NumFrames;        // Anzahl der Animationsphasen
          int m_FrameWidth;       // Breite einer Animationsphase
          int m_FrameHeight;      // Höhe einer Animationsphase
          int m_NumFramesX;		// Wie viele Anim-Phasen in X-Richtung?
      	int m_bXArea;			// SPeichert ob der Gegner im X Bereich ist
      	int	m_bYArea;			// Speichert ob der Gegner im Y Bereich ist		
      };
      
      #endif

      Ehrlich gesagt bin ich ziemlich überfordert mit dem Fehler und weiß nicht, wie ich ihn beseitigen kann. In früheren Versionen gab es keinerlei Probleme an dieser Stelle und ich habe an der Klasse seit der letzten Version nichts verändert...

      Comment


      • #4
        Beim debugging konnte ich feststellen das der Fehler in dieser Funktion steckt...
        Wahrscheinlich nicht, da diese Funktion nichts macht. Sie ruft weitere Funktionen auf. Also da reindebuggen.

        Auch prüfen, ob

        m_pImage
        m_pImage->format

        richtig belegt sind
        Christian

        Comment


        • #5
          Konnte das Problem jetzt lösen Danke für die Hilfe

          Comment

          Working...
          X