Kalsan
31. August 2009 um 08:36
1
Liebe Leute
Hier ein Auszug aus meinem Programm mit SDL:
fenster=SDL\_SetVideoMode(prgw,(prgh+25),32,SDL\_HWSURFACE);
SDL\_Rect \*rFlaeche;
rFlaeche-\>x=0;
rFlaeche-\>y=0;
rFlaeche-\>w=prgw;
rFlaeche-\>h=prgh;
SDL\_FillRect(fenster,rFlaeche,SDL\_MapRGB(fenster-\>format,200,200,200));
SDL\_WM\_SetCaption(prgname.get(), NULL);
SDL\_WM\_SetIcon(SDL\_LoadBMP("bilder/icon.bmp"), NULL);
SDL\_Flip(fenster);
Bei
SDL\_Rect \*rFlaeche;
rFlaeche-\>x=0;
rFlaeche-\>y=0;
rFlaeche-\>w=prgw;
rFlaeche-\>h=prgh;
stürzt das Programm ab, keine Ahnung, wieso…
So sieht die Variablenstruktur von SDL_Rect aus:
http://sdl.beuc.net/sdl.wiki/SDL_Rect
Kann mir jemand sagen, was ich falsch gemacht habe? SDL_FillRect verlangt, dass rFlaeche ein Pointer sein muss.
LG
Kalsan
Hi Kalsan,
SDL_Rect *rFlaeche;
rFlaeche->x=0;
rFlaeche->y=0;
rFlaeche->w=prgw;
rFlaeche->h=prgh;
für rFlaeche ist kein Speicherplatz mit new oder malloc
angefordert worden.
Gruss
norsemanna
Nachtrag
Hi Kalsan,
>Kann mir jemand sagen, was ich falsch gemacht habe? SDL_FillRect
>verlangt, dass rFlaeche ein Pointer sein muss.
dafür könntest du dann ggf. auch ein
SDL_Rect rFlaeche
vereinbaren und dann diesen später per &rFlaeche
an die weiteren Funktionen übergeben.
Gruss
norsemanna
Hallo Kalsan,
Bei
SDL\_Rect \*rFlaeche;
//Hier reservierst du Speicherplatz für den ZEIGER.
//Der Zeiger zeigt jetzt aber IRGENDWO in den Speicher
rFlaeche-\>x=0;
Hier schreibst du IRGENDWO eine 0 in den Speicher.
Je nachdem wo IRGENDWO ist, gibt es dann unterschiedliche Abstürze.
rFlaeche-\>y=0;
rFlaeche-\>w=prgw;
rFlaeche-\>h=prgh;
stürzt das Programm ab, keine Ahnung, wieso…
Kann mir jemand sagen, was ich falsch gemacht habe?
SDL_FillRect verlangt, dass rFlaeche ein Pointer sein muss.
SDL\_Rect rFlaeche;
rFlaeche.x=0;
rFlaeche.y=0;
rFlaeche.w=prgw;
rFlaeche.h=prgh;
SDL\_FillRect(fenster, &rFlaeche,SDL\_MapRGB(fenster-\>format,200,200,200));
MfG Peter(TOO)