windowsfehler bei GLOBAL Numfaces= X_NUMFACES(0)

Previous topic - Next topic

Schranz0r

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 !
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

Kitty Hello

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!!

Schranz0r

ist aber nur in GLBasic so oder?
Bei anderen Sprachen konnte ich, meines wissens, immer direkt zuweisen ?!
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

Kitty Hello

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!

Schranz0r

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