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...
LOCAL/GLOBAL gibt's in 2 Versionen:
1. Variablendeklaration
LOCAL a, b
GLOBAL c,d
a = 5
FUNCTION foo:
c = 7
ENDFUNCTIONDamit 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
LOCAL a
GLOBAL a
a = 5 // auto-local
GLOBAL a = 7
PRINT "a="+a+" ga="+GLOBAL a, 0,0
SHOWSCREEN
MOUSEWAIT
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:
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.
Ä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.
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.
Nö
Mach eine eigene Datei, schreib da rein:
FUNCTION LOAD: a,b
...
ENDFUNCTION
und im Hauptprogramm einfach nur LOAD(1,3)
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:
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
ENDFUNCTIONBrauche ich zu dem ein Global???
kapiert.
2 Möglichkeiten:
FUNCTION Init:
GLOBAL Info1, Info2
Info1=1
Info2=2
ENDFUNCTIONoder
FUNCTION Info: n
return n+1 // oder so...
ENDFUNCTION
GETSPRITE "blahblah.bmp", Info(1)
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!!!!!
Ja. Wichtig ist nur, dass Du möglichst keine LOCAL machst, die genauso heisst.
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...