Mit Functionen globale variabel erstellen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

The_Shadow3

Betreff: Mit Functionen globale variabel erstellen

BeitragMi, Jan 31, 2007 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

kann man mit einer normalen function eine globale variabel erstellen?

Bisher hab ich es so versucht

Code: [AUSKLAPPEN]

Function InitMyMessage()

   Global _MyReceiveMessages:String[1];

End Function


Ich brauche diese Variabel nähmlich auch in anderen Functionen, leider sagt der bei mit immer was von Unbekannte Variabel...

Hat jemand ne lösung? Oder geht sowas einfach nicht? XD

Blitzcoder

Newsposter

BeitragMi, Jan 31, 2007 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls du dann später Versuchst so daraf zuzugreifen, kann es nicht gehen:
Code: [AUSKLAPPEN]
_MyReceiveMessages[1] = "Gugu"


Weil die 1 beim Global setzten die Gesamtzahl der Felder ist. Und die Zählung startet bei 0. Also entweder so setzten:
Code: [AUSKLAPPEN]
global _MyReceiveMessages[2] = "Gugu"

Und so zugreifen:
Code: [AUSKLAPPEN]
_MyReceiveMessages[1] = "Gugu"

Oder so setzten:
Code: [AUSKLAPPEN]
global _MyReceiveMessages:String[1] = "Gugu"

und so zugreifen:
Code: [AUSKLAPPEN]
_MyReceiveMessages[0] = "Gugu"


MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

The_Shadow3

BeitragMi, Jan 31, 2007 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
naja ich habs so werte hinzugefügt:

Code: [AUSKLAPPEN]

.
.
.            
_MyReceiveMessages = MyReceiveMessages[.._MyReceiveMessages.length+1]
_MyReceiveMessages[MessageID]:+ MessageValue
.
.
.


und so abgefragt

Code: [AUSKLAPPEN]

Function MessageReceive:String(messageid:Int)
   If _MyReceiveMessages[messageid]
   
      Return _MyReceiveMessages[messageid];
   
   Else
   
      Return False
   
   EndIf
End Function


Das problem ist aber, das er die variabel nicht kennt (_MyReceiveMessages), ausserdem sehe ich ein problem das messageid ein Int ist, vielleicht mach ich da noch ein "toString()" (oder " "+messageid^^) falls das geht x_X



Edit:

hatte es so vor: Array["KeyName"] = Wert (von php abgekuckt^^), leider geht sowas scheinbar hier nicht, nur Intiger sind in der [] erlaubt :/

Farbfinsternis

BeitragMi, Jan 31, 2007 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Was Du machen willst geht schlichtweg nicht. Innerhalb einer Funktion kann man eine globale Variable definieren, das ist soweit richtig. Dies hat aber allein den Zweck dass die Funktion den Wert dieser Variable auch beim nächsten Aufruf noch kennt. Allerdings ist die Variable für den Rest des Programms "unsichtbar".
Code: [AUSKLAPPEN]

' So gehts
Function MyFunction()
    Global foo:Int = 10

    foo:+1
End Function

' Aber das geht nicht:
Function MyFunctionTwo()
    DebugLog foo
End Function

Wenn eine Variable von Funktionen geteilt werden soll erledigt man das entweder über einen Funktionsparameter oder über globale Variablen, Structs etc.
Farbfinsternis.tv
 

The_Shadow3

BeitragMi, Jan 31, 2007 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ok thx, dann lass ich die variabeln einfach ausserhalb der init-function erstellen^^, und der rest geht auch, benutze jetzt eine nette "Map"^^

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group