Unverständlicher Fehler



  • Hallo,

    also, ich habe eine Klasse, die folgendermaßen aussieht:

    class CTextSprite
    {
            public:
                    CTextSprite();
                    ~CTextSprite();
                    void    SetText(AnsiString txt);
                    void    SetColor(int r,int g, int b);
                    void    SetColor(unsigned long c);
                    void    SetBGColor(int r,int g, int b);
                    void    SetBGColor(unsigned long c);
    
                    void    SetSize(int size);
                    void    SetFont(AnsiString Font);
                    void    SetPosition(int x,int y);
                    void    SetCenterX(int x);
                    void    SetCenterY(int y);
                    void    Create();
                    void    Render(GLubyte *dst);
                    void    Clear(GLubyte *dst);
    
                    int     GetSizeX() { return w; }
                    int     GetSizeY() { return h; }
    
                    int     GetPosX() { return Pos.x; }
                    int     GetPosY() { return Pos.y; }
    
                    bool    bold;
                    bool    italic;
                    bool    underlined;
                    bool    tranparent_BG;
    
            private:
                    Graphics::TBitmap *CV;
                    AnsiString      Text;
                    unsigned long   TextColor,BGColor;
                    int             TextSize;
                    AnsiString      FontName;
                    TPoint          Pos;
                    int             w,h;
                    GLubyte         *Container;
                    PRGBTriple      Row;
                    int             r,g,b;
    
    };
    

    Die Funktion Clear() sieht folgendermaßen aus:

    void CTextSprite::Clear(GLubyte *dst)
    {
            for(int y=0;y<h;y++)
            {
                    for(int x=0;x<w;x++)
                    {
                            dst[4*((y+Pos.y)*g_pFramework->screen_x+x+Pos.x)+3] = 0;
    
                    }
            }
    }
    

    Und in dieser Funktion gibt es folgendes Problem:
    Sobald ich das Programm vom C++ Builder aus starte, erscheint bei Aufruf der Funktion die Fehlermeldung, dass ein Fehler Klasse EAcces Violation aufgetaucht und ein Fehler biem Zugriff im Modul [dem Programm] aufgetaucht, woraufhin ich das Programm manuell abbrechen muss.

    Ich habe zumindest herausgefunden, dass der Fehler auftritt, sobald ich auf h oder w zugreife (egal ob per ShowMessage oder in dem Fall durch Zuweisung).

    Ich habe allerdings keine Ahung, wieso! In einer anderen Funktion, zum Beispiel Render(), wird genauso auf die Werte zugegriffen, und da klappt alles.

    Was außerdem merkwürdig ist, wenn ich das Programm außerhalb starte, kommt keine Meldung und es wird auch alles problemlos angezeigt.

    Weiß einer Rat?

    Danke schonmal!



  • Zur Zeit herrscht große Kristalkugelknappheit weil die Preise auf dem Weltmarkt explodiert sind.

    Ohne etwas dazugehörigen Quelltext wird es also schwierig dir zu helfen.
    Aber mal ein simpler Rat: Der Debugger ist dein Freund.


Anmelden zum Antworten