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.jpgbild 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) ausgebenEdit: 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
