GLBasic forum

Other languages => GLBasic - de => Topic started by: Heiko on 2008-Oct-14

Title: DELETE und Types Frage
Post by: Heiko on 2008-Oct-14
In der Hilfe steht ja, dass dies nur in der Foreach-next schleife geht und eben in DIMs.

Ich würde ganz gern ein komplettes Objekt aus einer Type Kollektion löschen wollen.

Also bspw.   Buch AS TBuch   
                 Delete Buch IN TBuch

geht das irgendwie?

Oder hab ich das falsch verstanden?
Title: Re: DELETE und Types Frage
Post by: Kosta on 2008-Oct-14
ähm...

moment...

du erzeugst die Instanz am Anfang mit   

Code (glbasic) Select
LOCAL Buch[] AS TBuch

dann in der foreach schleife machst du dann z.b.

Code (glbasic) Select
foreach buchauswahl in Buch[]
      bla bla bla
      delete buchauswahl
      blubb blubb
next



Du musst aber wirklich in der foreach schleife löschen, d.h. es geht NICHT, dass du innerhalb der foreach-schleife eine funktion oder sub aufzurufen und dort versuchst das zu löschen.
Title: Re: DELETE und Types Frage
Post by: Heiko on 2008-Oct-14
Ähm ja, aber ich würde gern einfach nur so Delete Buch machen.

Code (glbasic) Select
Type TBuch
          bla
         ENDTYPE


Local Buch AS TBuch

Foreach Buch IN TBUCH
DELETE Buch
Next


so richtig, habs jetzt einfach mal so hingeschmiert, kann sein, dass ich nen schusselfehler drin hab.mag types nich so besonders, aaaber ich brauch sie.grins
Title: Re: DELETE und Types Frage
Post by: Kosta on 2008-Oct-14
sorry....habe meinen obigen Text korrigiert....

deine foreach Zaehlschleife ist nicht gleich dein Array

siehe obiges Beispiel
Title: Re: DELETE und Types Frage
Post by: Heiko on 2008-Oct-14
Ich will aber nicht buchauswahl löschen, sondern Buch.
Muss denn ein Buch[] stehen?

Schau....

Code (glbasic) Select
Type TBuch
ENDTYPE

Local Buch AS TBuch


und Buch will ich komplett löschen.Am Ende des Programms zum Beispiel
Title: Re: DELETE und Types Frage
Post by: Kosta on 2008-Oct-14
In Buch stehen alle deine Bücher drin  -> (das Array)
Wenn du nicht mehrere Bücher brauchst (gleichzeitig), musst du kein Array machen.

Bei meinem Beispiel:
die Foreach-schleife geht jeden Wert des Arrays durch (nennt es beim durchlauf "Buchauswahl")...

jetzt ist die Frage ...willst du alle Bücher löschen, oder nur dieses eine in der Buchauswahl
-------------------
wenn du alle löschen willst, definiere dein Array neu mit den Wert 0
Title: Re: DELETE und Types Frage
Post by: Heiko on 2008-Oct-14
mmm praktisch sieht es eigentlich so aus, oder so solls aussehen.

Code (glbasic) Select
Type TSnow
        snow
ENDTYPE


Code (glbasic) Select
local flake AS TSnow

flake.snow blablabla
usw. usw.



und eben am Ende

Code (glbasic) Select
DELETE flake

oder wäre es dann so richtiger?

Code (glbasic) Select
local flake[] AS TSnow

flake.snow blablabla
usw. usw.



Code (glbasic) Select
FOREACH blasnow IN flake[]
DELETE blasnow
NEXT


bestimmt hab ich jetzt grad irgendwas durcheinandergebracht, liegt vermutlich daran, dass ich jetzt wirklich ein wenig verwirrt bin.
Title: Re: DELETE und Types Frage
Post by: Quentin on 2008-Oct-14
verstehe den Sinn deiner Frage nicht so recht.
Wenn du ein Array eines TYPE anlegst, kannst du einzelne Elemente daraus mit DELETE löschen wie Kosta es beschrieben hat.
Wenn du nur eine Variable eines TYPE hast ... welchen Sinn macht es die löschen zu wollen. Ebenso könntest du dich dann fragen, ob du eine String oder Zahlvariable löschen könntest, also ich meine jetzt löschen im Sinne von Speicher freigeben.
Title: Re: DELETE und Types Frage
Post by: Kosta on 2008-Oct-14
mir ist nicht klar, was du mit den Schneeflocken machen willst (Eigenschaft snow).... Nehmen wir folg. an... du willst die Schneeflocken darstellen (von oben fallend) und später willst du feststellen, dass wenn sie am Boden sind, dass sie gelöscht werden sollen)

dann sieht es so aus:
Code (glbasic) Select


TYPE schneesturm
    x  // x-wert
    y // y-wert
ENDTYPE

local schnee[] as schneesturm   // als Array, da es wahrscheinlich mehrere Schneeflocken geben wird


foreach schneeflocke in schnee[]    // Gehe alle Schneeflocken im Array Schnee durch
      inc schneeflocke.y,1
      if schneeflocke.y > 240 then delete schneeflocke
      print "*",schneeflocke.x,schneeflocke.y
next

Title: Re: DELETE und Types Frage
Post by: Heiko on 2008-Oct-14
eben gerade hab ich das auch geschnallt.
das mit dem [] .
war vorher ein klitzkleiner denkfehler von mir. :whistle:
Title: Re: DELETE und Types Frage
Post by: Schranz0r on 2008-Oct-14
Ich errinnere mich mal ein kleines Tutorial gemacht zu haben...