Global-Variable in Function ??

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

loosergt

Betreff: Global-Variable in Function ??

BeitragSa, Dez 11, 2004 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hört sich sicher blöd an ... aber

Also ich deklariere eine Variable im Hauptprogramm mittels

global x=1

dann springe ich in eine function mit

functionname (x)

der wert von x kommt auch richtig in der function an und wird dort weiterberechnet. Nun möchte ich aber, daß der neu berechnete Wert eben Global verfügbar ist. Nach der Rückkehr aus der Function hat x aber seinen alten Wert ???
Web : http://64kbyte.homeip.net
286@16MHz/8MB/40MB-HD/Voodoo 12MB/SB-16 Value/10MBit-Koax-LAN@topSPEED

Hubsi

BeitragSa, Dez 11, 2004 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
x ist global, du musst es also nicht extra übergeben Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

loosergt

BeitragSa, Dez 11, 2004 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
gut. aber wieso kommt der neu berechnete wert so nicht aus der function zurück ? er nimmt wieder den wert vor dem ausführen der function an !!
Web : http://64kbyte.homeip.net
286@16MHz/8MB/40MB-HD/Voodoo 12MB/SB-16 Value/10MBit-Koax-LAN@topSPEED
 

Klaas

BeitragSa, Dez 11, 2004 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
methode 1 mit global
Code: [AUSKLAPPEN]

global x=12

print "vorher: "+x
xplus()
print "nachher: "+x
waitkey
end
function xplus()
   x = x + 1
end function


methode 2 ... es geht auch ohne global
Code: [AUSKLAPPEN]

x=12

print "vorher: "+x

x = xplus(x)

print "nachher: "+x
waitkey
end
function xplus(meinLokalesX)
   meinLokalesX = meinLokalesX + 1
   return meinLokalesX
end function

loosergt

BeitragSa, Dez 11, 2004 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
danke @klaas jetzt ist's klar. ich habe die variable immer noch extra an die function übergeben, aber sie ist ja global (@hubsi). dadurch hat die function scheinbar eine neue interne variable gemacht, die beim verlassen nichts mit der globalen gemein hat. Wink
Web : http://64kbyte.homeip.net
286@16MHz/8MB/40MB-HD/Voodoo 12MB/SB-16 Value/10MBit-Koax-LAN@topSPEED

Jolinah

BeitragSa, Dez 11, 2004 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Parameter sind in BB immer Lokal, wenn sie gleich heissen wie eine Globale Variable so wird beim ansprechen die lokale verwendet.

@PS: Da das Thema BMax jetzt ziemlich aktuell ist.. *g*

In BMax kann man dann Parameter by Reference übergeben. Damit ist genau das möglich was du vorhattest. Dazu muss die Variable aber aussen nicht mehr als Global definiert werden, sondern man übergibt sie nur. Die Funktion arbeitet damit und muss nichtmal was zurückgeben und danach ist der Wert so wie er in der Funktion geändert wurde.

Das gleiche Problem tritt dann ausserdem auch noch bei den neuen Types von BMax auf. Eine Methode (Funktion) in einem Type kann als Parameter einen Wert haben der so heisst wie ein Field (Eigenschaft,Variable) des Types. Wenn man also die Variable anspricht so hat man auch da wieder die lokale Variable statt das Field des Types:

Code: [AUSKLAPPEN]

Type MyType
  Field x

  Method Bla(x)
    x = 20  'x spricht nicht das Field x an sondern den Parameter der Methode
    Self.x = 10 'Dafür gibts Self. Das spricht nun das Field x an ;)
  End Method
End Type

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group