DELETE und Types Frage

Previous topic - Next topic

Heiko

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?

Kosta

#1
ä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.
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

Heiko

Ä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

Kosta

sorry....habe meinen obigen Text korrigiert....

deine foreach Zaehlschleife ist nicht gleich dein Array

siehe obiges Beispiel
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

Heiko

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

Kosta

#5
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
Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

Heiko

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.

Quentin

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.

Kosta

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

Intel QuadCore, Geforce8600GT,512MB,4GB Ram, 26" TFT
HP nw8440 Schläppy
GP2X Mk2 (Firmware 3.0)

GLBASIC Blog:
http://www.glbasic.com/forum/index.php?blog=51.0

Heiko

eben gerade hab ich das auch geschnallt.
das mit dem [] .
war vorher ein klitzkleiner denkfehler von mir. :whistle:

Schranz0r

Ich errinnere mich mal ein kleines Tutorial gemacht zu haben...
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard