Call by Reference

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Gombolo

Betreff: Call by Reference

BeitragMo, Jan 02, 2006 2:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche Möglichkeiten gibt es eine Variable an eine Funktion Call by Reference zu übergeben. Oder geht das nicht mit BB?

Beispiel:
BlitzBasic: [AUSKLAPPEN]

a = 10

Function Beispiel(a%)
a = 20
EndFunction


Die Variable a soll danach den Wert 20 haben.
Heute ist der erste Tag vom Rest deines Lebens
http://gombolo.go.funpic.de/

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Jan 02, 2006 3:59
Antworten mit Zitat
Benutzer-Profile anzeigen
?? In der OH steht...Zitat:
Beispiel
Dieses Beispiel zeigt die Verwendung von Funktionen:

PRINT Rechnen(15,3)
END

FUNCTION Rechnen(Zahl1,Zahl2)
RETURN Zahl1*Zahl2
END FUNCTION
Mit Return wird die berechnete Zahl aus der Funktion zurrück zum 'Sender' verschickt. Dieses Beispiel zeigt schonmal zwei Möglichkeiten. Werte an Funktion senden. Und Rückgabewerte aus einer Funktion empfangen. Wenn ich es aber richtig verstanden habe. Möchtest du die Variable a durch die Funktion ändern lassen... Das geht natürlich auch. Dafür mußt du die Variable zuerst als Global definieren...Code: [AUSKLAPPEN]
Global a%

a=10
Print a
Beispiel
Print a


Function Beispiel()
a=20
End Function
 

Dreamora

BeitragMo, Jan 02, 2006 4:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich fürchte Call by Ref ist in Blitz (ausser Blitzmax) nicht möglich
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

CodeMaster

BeitragMo, Jan 02, 2006 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hah! Doch, man kann es faken SmileBlitzBasic: [AUSKLAPPEN]
Type TVarByRef
Field ValueStr$
Field ValueInt%
Field ValueFloat#
End Type


MyVar.TVarByRef = New TVarByRef
MyVar\ValueInt = 32

Print MyVar\ValueInt

INT_MyFunction( MyVar )

Print MyVar\ValueInt


WaitKey()
End



Function INT_MyFunction.TVarByRef( InputVar.TVarByRef )
InputVar\ValueInt = 20
End Function
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102
 

Gombolo

BeitragMo, Jan 02, 2006 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic hat Folgendes geschrieben:
Das geht natürlich auch. Dafür mußt du die Variable zuerst als Global definieren...


Genau das wollte ich verhindern Wink

Ich werde es so machen müssen

BlitzBasic: [AUSKLAPPEN]
Function Beispiel(a%)
a = 20
Return a
End Function

a = 10

a = Beispiel(a)
Heute ist der erste Tag vom Rest deines Lebens
http://gombolo.go.funpic.de/
 

Gombolo

BeitragMo, Jan 02, 2006 10:32
Antworten mit Zitat
Benutzer-Profile anzeigen
@CodeMaster

sehe grade deinen Beitrag. Aber Types wollte ich eigentlich nicht verwenden, aber mal sehen. Rolling Eyes
Heute ist der erste Tag vom Rest deines Lebens
http://gombolo.go.funpic.de/
 

Chris02

BeitragMo, Jan 02, 2006 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
mal eine Frage, was ist Call by ref
 

Dreamora

BeitragMo, Jan 02, 2006 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei einem solchen Aufruf wird nicht der Wert selbst übergeben (wie in Blitz in allen Fällen), sondern ein Verweis auf den Wert (funktionsaufrufe mit VAR in BlitzMax).
Dadurch kann man die Variable die reingegeben wird selbst verändern in der Funktion, nicht nur über eine Zuweisung mit einem Rückgabewert.

Das ist zb zwingend notwendig, wenn man in einer Funktion mehr als einen Rückgabewert haben will.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheShadow

Moderator

BeitragMo, Jan 02, 2006 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Referenzen sind vergleichbar mit Zeigern - jedoch sind Referenzen einfacher zu handeln und sicherer in Verwendung.
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group