Hi wie in der Headline schon steht:
// Object + Textur
X_LOADOBJ "cube.ddd", 0
LOADSPRITE "pngbase.png", 0
GLOBAL Numfaces= X_NUMFACES(0)
WHILE TRUE
PRINT Numfaces,10,10
SHOWSCREEN
WEND
END
gibt mir einen Windoof-fehler , sprich die Exe hängt sich auf!
Testet ihr das bitte auch mal?!
Mache ich das Global weg gehts !
Jo. Also. GLOBAL hat 2 Funktionen.
1. Neue Variable:
Das erste Mal, wenn der Compiler auf GLOBAL XXX oder GLBOAL XXX=YYY stößt, macht er eine globale Variable mit dem Namen XXX und weist ihr noch vor Programmbeginn den Wert 0 oder YYY zu.
In Deinem Fall "X_NUMFACES(0)", wobei die 3D Engine noch gar nicht geladen ist.
2. Globale Unterscheidung
Wenn es 2 Variablen gibt, die gleich heissen, kann man mit dem Keyword GLOBAL dafür sorgen, dass der Compiler die globale verwendet. In Deinem Beispiel müsste man dazu schreiben:
GLOBAL Numfaces // Macht eine globale mit Wert 0
GLOBAL Numfaces = X_NUMFACES(0) // weist an dieser Stelle den Wert zu
Da es keine andere Variable mit dem Namen Numfaces gibt, solltest Du's so machen:
GLOBAL Numfaces // Compiler, mecker nicht rum - ich weiß, dass es die gibt
Numfaces = X_NUMFACES(0) // nimmt immer die globale, weil's keine lokale gibt!!
ist aber nur in GLBasic so oder?
Bei anderen Sprachen konnte ich, meines wissens, immer direkt zuweisen ?!
Ja. Ich hab das so gemacht, damit man globale variablen eben zuweisen kann vor Programmstart. Ich sollte es evtl. so ändern, dass er das nur macht, wenn die GLOBAL ausserhalb von FUNCTION steht. Viel bessere Idee!
Grunz, grunz!
Ok wie du es meinst ;)