Wert einer variable wird ignoriert?



  • hi,
    ich hab hier ein wirklich seltsames problem...

    bild 1: Debugger, man beachte den wert von cPos.x
    http://www.pixartist.de/aha1.jpg

    bild 2: Hier befinde ich mich im nächste schritt.. die Messagebox wird NICHT gezeigt(if bedingung FALSE !?)
    http://www.pixartist.de/aha2.jpg
    bei setPos wird 0,0 übergeben, trotz:

    http://www.pixartist.de/aha3.jpg

    wie in aller welt?



  • lass doch mal in der Schleife das "Vektor" weg.



  • GreyHound schrieb:

    .... weil beim ersten Schleifendurchlauf cPos.x,y,z noch den Initialisierungswert haben und noch nicht mit getPos() angepasst wurden?

    bei ersten schleichendurchlauf ist first = true...da wird das garnicht aufgerufen



  • jo sry, zu überhastet geantwortet, hab´s schon editiert. 😉



  • Das ist aber in der Tat merkwürdig 😕
    Was für Typen sind denn Vektor.x/.y/.z?
    Vielleicht spinnt auch der Debugger, lass dir den Wert mal per MessageBox (oder sonstwie) ausgeben

    Edit: Oh, GreyHound hats entdeckt.. 😃



  • void SDL_Dropdown::paint(SDL_Surface *to)
    {
    	Vektor cPos;
    	Vektor cSize;
    	bool first = true;
    	for (std::list<SDL_Button>::iterator i = ddButtons.begin(); i != ddButtons.end(); ++i) 
    	{ 
    
    		if(!first && opened)
    		{
    			char t[25];
    			sprintf(t, "%i", (int)cPos.x);
    			MessageBox(0,"",t,0);
    			if((int)cPos.x != 0)
    				MessageBox(0,"","",0);
    			(*i).setPos(cPos.x, cPos.y+cSize.y);
    			(*i).paint(to);
    		}
    		else if(first)
    		{
    			(*i).paint(to);
    		}
    		Vektor cPos = (*i).getPos();
    		Vektor cSize = (*i).getSize();
    		first = false;
    
    	}
    }
    

    messagebox titel ist "0" ....

    http://www.pixartist.de/omg.jpg

    cPos.x ist double..wenn ich nicht nach int caste, dann ist im char 0.0000000e usw.



  • void SDL_Dropdown::paint(SDL_Surface *to)
    {
        Vektor cPos;
        Vektor cSize;
        bool first = true;
        for (std::list<SDL_Button>::iterator i = ddButtons.begin(); i != ddButtons.end(); ++i)
        {
    
            if(!first && opened)
            {
                (*i).setPos(cPos.x, cPos.y+cSize.y);
                (*i).paint(to);
            }
            else if(first)
            {
                (*i).paint(to);
            }
            /*Vektor*/ cPos = (*i).getPos();
            /*Vektor*/ cSize = (*i).getSize();
            first = false;
    
        }
    }
    

    ?



  • bei sonderbehandlung des ersten elementes zieht man übrigens typischerweise das erste element aus der schleife raus. machts übersichtlicher und erhöht die performanz ein bisschen.



  • GreyHound schrieb:

    void SDL_Dropdown::paint(SDL_Surface *to)
    {
        Vektor cPos;
        Vektor cSize;
        bool first = true;
        for (std::list<SDL_Button>::iterator i = ddButtons.begin(); i != ddButtons.end(); ++i)
        {
           
            if(!first && opened)
            {
                (*i).setPos(cPos.x, cPos.y+cSize.y);
                (*i).paint(to);
            }
            else if(first)
            {
                (*i).paint(to);
            }
            /*Vektor*/ cPos = (*i).getPos();
            /*Vektor*/ cSize = (*i).getSize();
            first = false;
           
        }
    }
    

    ?

    boa ich depp 🙄

    danke 👍


Anmelden zum Antworten