Global-Variable in Function ??
Übersicht

![]() |
loosergtBetreff: Global-Variable in Function ?? |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
x ist global, du musst es also nicht extra übergeben ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
loosergt |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
Web : http://64kbyte.homeip.net
286@16MHz/8MB/40MB-HD/Voodoo 12MB/SB-16 Value/10MBit-Koax-LAN@topSPEED |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group