GLBasic forum

Other languages => GLBasic - de => Topic started by: blastar on 2008-May-12

Title: Problem mit DIMDEL
Post by: blastar on 2008-May-12
habe mal mit linkedlists etwas rumprobiert und mir was zusammengebastelt... funktioniert soweit ganz gut aber irgendwie komme ich mit DIMDEL nicht zurecht. es kommt immer der fehler "test.gbas"(31) error : wrong argument type : DIMDEL, arg no: 2 obwohl es eigentlich richtig sein sollte - wo liegt mein fehler???

Code (glbasic) Select
TYPE tSTAR
x; y; gx; gy
ENDTYPE

GLOBAL STARList[] AS tSTAR

SETSCREEN 320,240,0
LIMITFPS 15

WHILE TRUE
ADDSTAR(RND(316), RND(236))
MOVESTAR()
DRAWSTAR()
PRINT LEN(STARList[]), 4, 4
SHOWSCREEN
WEND

FUNCTION DRAWSTAR:
LOCAL b AS tSTAR
FOREACH b IN STARList[]
DRAWRECT b.x, b.y, 4, 4, RGB(255, 255, 255)
NEXT
ENDFUNCTION

FUNCTION MOVESTAR:
LOCAL b AS tSTAR
FOREACH b IN STARList[]
b.x = b.x + b.gx
b.y = b.y + b.gy
IF b.x > 320 OR b.x < -4 OR b.y > 240 OR b.y < -4 THEN DIMDEL STARList[], b
NEXT
ENDFUNCTION

FUNCTION ADDSTAR: x, y
LOCAL b AS tSTAR
b.x = x
b.y = y
b.gx = RND(7)-3.5
b.gy = RND(7)-3.5
DIMPUSH STARList[], b
ENDFUNCTION
Title: Re: Problem mit DIMDEL
Post by: Schranz0r on 2008-May-12
Löschen tust du einen Typeeintrag so :

Code (glbasic) Select
IF b.x > 320 OR b.x < -4 OR b.y > 240 OR b.y < -4 THEN DELETE b

"b" ist hier kein Indexwert des Arrays "STARList[]", sondern eine Instanz die auf "STARList[]" zugreift. 
Title: Re: Problem mit DIMDEL
Post by: blastar on 2008-May-12
danke für die schnelle hilfe... :good: ...funtioniert, ich versuchs mal zu verstehen!
Title: Re: Problem mit DIMDEL
Post by: Schranz0r on 2008-May-12
Ist ganz einfach  :grin:

Wenn du in einer FOREACH-Schleife ein Teil löschen willst, dann benutze DELETE und nicht DIMDEL ;)
Das gemerkt, und die Welt ist OK   :good:

Sonnst haste es TOP gemacht!