Global list:TList = CreateList() innerhalb eines Types

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

rema

Betreff: Global list:TList = CreateList() innerhalb eines Types

BeitragFr, Jun 03, 2005 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist daran falsch? Den die Fehlermeldung lautet:

Compile Error
Type global initializer must be constant

Code: [AUSKLAPPEN]
Type test

   Global list:TList = CreateList()

   Field a:String
   Field x:Int

End Type


Ich möchte eben nur diese Liste innerhalb des Types ansprechen können.
Oder mache ich ein Gedankenfehler?
 

Timo

BeitragFr, Jun 03, 2005 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
(ich habe kein Bmax, drum kann es sein, das ich jetzt Müll laber)
ich glaub, es liegt daran, das du sofort hinter Global die Variable list "Createst". Also es müsste glaub ich "Global list:TList" heißen und erst in einer Methode schreibst du dann "list=CreateList()"

TheShadow

Moderator

BeitragFr, Jun 03, 2005 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
mach

Field List:TList

alles andere geht nicht
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

rema

BeitragFr, Jun 03, 2005 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber wen ich mit

list.addlast = _img

Ein Image hinzufügen will, so bekomme ich die nächste Fehlermeldung.
 

Timo

BeitragFr, Jun 03, 2005 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
das sind alles Syntax probleme Wink

du hast eine Funktion die "addlist" heißt? Ich denke mal, dann willst du das image übergeben. die übergabe muss allerdings in Klammern

BlitzMax: [AUSKLAPPEN]

list.addlast(_img)


mit dem = Zeichen weist du etwas zu, hier weißt du etwas einer funktion zu, das geht leider nicht

rema

BeitragFr, Jun 03, 2005 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau. Das ist es eben bei OOP, man muss sich so einiges umgewöhnen.

Wie sieht es mit einer TListe aus? Kann man dort alles reinpacken, also Variabeln die diverses beinhalten?
 

Timo

BeitragFr, Jun 03, 2005 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
TListe ist eine Klasse, die du selber programmiert hast (haben musst). Klar kannst du dort so viele Variablen deklarieren, wie du willst Smile sie können auch alles speichern, selbst andere objekte. Du musst es dem Compi nur sagen (sprich programmieren)

PS: diese Syntaxprobleme haben weniger mit OOP zu tun Wink

bruZard

BeitragFr, Jun 03, 2005 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Mann Timo, halte einfach mal die Backen ...

@rema:
Code: [AUSKLAPPEN]

Type Test
  Global list:TList

  Field a:String
  Field x:Int

  Method New()
    if list:TList = Null Then list = New TList
    list.AddLast(Self)
  End Method

  Method SetX(_x:Int)
    x = _x
  End Method
End Type
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

TheShadow

Moderator

BeitragFr, Jun 03, 2005 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
bruz warum machst du das:

list.AddLast(Self)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Jolinah

BeitragFr, Jun 03, 2005 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Er hat eine Globale Liste, die ist statisch. Beim Objekt erstellen prüft er dann ob es schon eine Liste gibt, wenn nicht erstellt er eine. Dann fügt er der Liste das neuerstellte Objekt hinzu (Self). Wink
  • Zuletzt bearbeitet von Jolinah am Fr, Jun 03, 2005 20:06, insgesamt einmal bearbeitet

DivineDominion

BeitragFr, Jun 03, 2005 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh mann Smile

bruZards Code erstellt ne Liste die alle Instanzen des eigenen Type beinhalten. Existiert die Liste nicht, wird sie erstellt. Ist doch IMHO ziemlich einfach und leicht ershcließbar
christian.tietze@gmail.com - https://christiantietze.de
macOS
 

Dreamora

BeitragFr, Jun 03, 2005 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Jopp
Ist der "Fake" vom alten Blitz Type Handling und überdies eine einfache und sinnvolle Variante mit BMs GarbageCollector umzugehen, da man so ein objekt einfach deleten kann: Einfach mittels remove aus der Liste löschen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rema

BeitragFr, Jun 03, 2005 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Divi: Nicht für alle ist es auf Anhieb gleich verständlich. Wen es so wäre, so würde dieses Board nicht exestieren.

Aber trotzdem: Danke an alle!

TheShadow

Moderator

BeitragSa, Jun 04, 2005 9:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so ja, jetzt sehe ich es... Oh ich habes immer mit externen Listen gemacht... Das ist praktisch...

So was ist, wenn man ein Obj. aus deiner Liste entfernt, aber eine andere Obj-Variable hat es noch referenziert - dann wird es aus dem Speicher nicht gelöscht... Darum ist es kein Vergleich mit BB-Klassischen DELETE
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Dreamora

BeitragSa, Jun 04, 2005 10:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man die Typen in einer anderen Struktur noch referenziert, macht diese Liste natürlich wenig Sinn (zb eine Liste der Partikel in einem Partikelsystem ist nutzlos, da sie ja schon an Emitter und/oder Partikeltypen gebunden sind).
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group