Global

Previous topic - Next topic

WPShadow

Hi!

Wenn ich mehrere oder eher viele GLOBAL - Variablen habe... Nun, wie schreibe ich das, ohne daß ich in der neuen Zeile wieder GLOBAL schreiben muss? Und falls ich doch in der 2. Zeile weiter schreiben muss, löscht das dann die Werte bzw. die Variablen vom 1. GLOBAL???

GLG

W.

PS.: Klingt kompliziert, sorry! Um die Uhrzeit schlafe ich normalerweise schon...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

LOCAL/GLOBAL gibt's in 2 Versionen:

1. Variablendeklaration
Code (glbasic) Select
LOCAL a, b
GLOBAL c,d
a = 5

FUNCTION foo:

c = 7
ENDFUNCTION
Damit sagst Du dem Compiler wo a,b und c,d gültig sind. Das muss _vor_ dem Benutzen der Variable geschehen, sonst macht der Compiler automatisch eine GLOBAL draus.


2. Direkte Adressierung
Code (glbasic) Select
LOCAL a
GLOBAL a

a = 5 // auto-local
GLOBAL a = 7

PRINT "a="+a+" ga="+GLOBAL a, 0,0
SHOWSCREEN
MOUSEWAIT

WPShadow

Das ist mir ja soweit klar...

Meine Frage ist eher, wenn ich, sagen mir mal, 200 GLOBAL anweisungen hätte!

Klingt wild, ich weiß! Aber wenn es halt mehrere sind!

Kann man da so schreiben:

Code (glbasic) Select
GLOBAL Befehl_a, Befehl_b,...
GLOBAL Befehl_aa, Befehl_ab,...
GLOBAL Befehl_aaa, Befehl_aab,...
Solange die verschiedenen Bezeichnungen sich nicht "überschneiden", also gleich heißen, müßte es doch funktionieren, oder?

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Ähh... ja?
aber: ist da nicht evtl. ein Feld besser?
GLOBAL Befehl[]
DIM Befel[200] ?

GLOBAL muss man nicht schreiben, das macht der Compiler automatisch, wenn DU kein LOCAL schreibst.

WPShadow

Nun, mein Problem ist etwas spezieller! Ich habe mir nämlich gedacht, daß ich das Programm in verschiedene "Kleinteile" aufteile! z.B. schreibe ich gerade ein einem "Loader", d.h. daß ich nur mehr

LOAD (1, 3)

eingeben muß und nicht

GETSPRITE "DATA/TEXTUR/BLABLABLA.BMP", own_ship_textur_1

Aber ich möchte den "Loader" nicht im Hauptprogramm unterbringen müssen, da das "Ding" ansonsten weiß Gott wie viele Zeilen ausmacht. Ich möchte einfach alles von dort aus laden und dann einfach nur mehr einen Befehl nutzen, damit z.B. die Function LOAD_OWN_SHIP einfach mein gesamtes Schiff lädt!

Brauche ich in dem Fall, wenn ich eine Datei einbinde dann eigentlich noch den GLOBAL Befehl???

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello


Mach eine eigene Datei, schreib da rein:
FUNCTION LOAD: a,b
...
ENDFUNCTION

und im Hauptprogramm einfach nur LOAD(1,3)

WPShadow

Ok, das ist klar!

Und was ist mit diesem Teil:

GETSPRITE "BLABLA.BMP", INFO_1

Bei meinem Hauptprogramm mußte ich nämlich ein GLOBAL einsetzen, um das "INFO_1" an eine andere Stelle zu übergeben...

Hier der Programmteil:

Code (glbasic) Select
FUNCTION Load: Loader, Nummer
// Ladefunction
// 1 = Graphik
// 2 = 3D Modell (*.ddd - Format)
// 3 = Textur
// 4 = Bumpmap
// 5 = Hintergrundmusik
// 6 = Geräusche


IF Loader = 1

IF Nummer = 1 THEN LOADSPRITE "DATA/TEXTUR/Inventar_1.bmp", inv_back1

ENDIF

IF Loader = 2

IF Nummer = 1 THEN X_LOADOBJ "DATA/MODELL/Mitte3.ddd", own_obj1

ENDIF

IF Loader = 3

ENDIF


ENDFUNCTION
Brauche ich zu dem ein Global???
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

kapiert.
2 Möglichkeiten:
Code (glbasic) Select
FUNCTION Init:
GLOBAL Info1, Info2
Info1=1
Info2=2
ENDFUNCTION
oder
Code (glbasic) Select
FUNCTION Info: n
   return n+1  // oder so...
ENDFUNCTION

GETSPRITE "blahblah.bmp", Info(1)

WPShadow

Da gefällt mir die 1. Möglichkeit gut!

Im Prinzip bedeutet das, daß ich einfach in der FUNCTION XYZ: das GLOBAL einbauen kann und es wird überall hin verteilt!

Das ist super!

DANKE!!!!!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Ja. Wichtig ist nur, dass Du möglichst keine LOCAL machst, die genauso heisst.

WPShadow

Das ist schon klar! Darauf werde ich auf jeden Fall schauen!

Schicke dir mal Mitte bis Ende der Woche ein kleines "Demo"...

Bin gespannt was du sagst...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est