GLBasic forum

Main forum => Bug Reports => Topic started by: Schranz0r on 2007-Oct-22

Title: windowsfehler bei GLOBAL Numfaces= X_NUMFACES(0)
Post by: Schranz0r on 2007-Oct-22
Hi wie in der Headline schon steht:

Code (glbasic) Select
// 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 !
Title: windowsfehler bei GLOBAL Numfaces= X_NUMFACES(0)
Post by: Kitty Hello on 2007-Oct-23
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!!
Title: windowsfehler bei GLOBAL Numfaces= X_NUMFACES(0)
Post by: Schranz0r on 2007-Oct-23
ist aber nur in GLBasic so oder?
Bei anderen Sprachen konnte ich, meines wissens, immer direkt zuweisen ?!
Title: windowsfehler bei GLOBAL Numfaces= X_NUMFACES(0)
Post by: Kitty Hello on 2007-Oct-23
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!
Title: windowsfehler bei GLOBAL Numfaces= X_NUMFACES(0)
Post by: Schranz0r on 2007-Oct-23
Ok wie du es meinst ;)