Global Array in einem Type nur umständlich zu definieren

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

rema

Betreff: Global Array in einem Type nur umständlich zu definieren

BeitragSa, Okt 22, 2005 11:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Sobald ein Array als klar definierte Grösse in einem Tyoe definiert wird, so bekomme ich vom Compiler eine Fehlermeldung.

Compiler Error
Type global initializers must be constant


Code: [AUSKLAPPEN]

Type test

   Global x:Int[] ' ist ok
   Global y:Int[3] ' gibt diese Fehlermeldung
   Global z:Int[] = [0,0,0] ' gibt diese Fehlermeldung
   
End Type


Nun aber kann ich folgendes tun. Ein globales undefiniertes Array in einem Type definieren und von Aussen dieses Redimensionieren.

Code: [AUSKLAPPEN]
Type test

   Global x:Int[]
   
End Type


test.x = New Int[3] ' funzt wunderbar


test.x[0] = 10
test.x[1] = 20
test.x[2] = 30

DebugLog test.x[0]
DebugLog test.x[1]
DebugLog test.x[2]


Nun meine Frage, ist dies nicht ein wenig buggi, oder denke ich da irgendwie falsch?

TheShadow

Moderator

BeitragSa, Okt 22, 2005 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ja komisch...

Code: [AUSKLAPPEN]
Type test
   Global array:Int[]

   Method New()
      If array=Null Then array=array[..100]
   EndMethod

   Method Delete()
      array=Null
   EndMethod
EndType

Print "Adresse von array-inhalt: "+Int(Byte Ptr(test.array))
Print "Adresse von array-pointer?: "+Int(Varptr(test.array))
Print "Array Laenge: "+test.array.length


So wie es aussieht darf nur ein "Pointer" in einem Type stehen. andernfalls würde man beim ändern der array-größe alle speicheradressen durcheinanderwirbeln...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Dreamora

BeitragSa, Okt 22, 2005 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Anmerkung: In der neuen kommenden Version sollen solche Konstante Initializer möglich sein, zumindest gemäss Aussage von Mark

Im moment wären sie eh ohne nutzen, denn ein Array den man mit a:type[3] deklariert muss man danach dennoch mit New nochmal befüllen, weil er mit null gefüllt wäre.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rema

BeitragSo, Okt 23, 2005 7:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Hilfe. Habe das Problem auch schon im eng. Forum nachgelesen.

Da muss Mark was am Compiler ändern. Hoffe dass das Update doch demnächst bald kommen sollte...

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group