Referenz - BYVAL (Klausel)
Syntax A: DECLARE { SUB | FUNCTION } Name (BYVAL parameter AS TYP, ...)
Syntax B: { SUB | FUNCTION } Name (BYVAL parameter AS TYP, ...)
Typ: Klausel
Kategorie: Programmorganisation
Legt in einer Parameterliste fest, dass ein Parameter BYVAL übergeben werden soll.
Beide Syntaxes symbolisieren die Parameterliste einer Prozedur; siehe dazu DECLARE, SUB, FUNCTION, Prozeduren, Parameterübergabe.
ByVal steht für 'By Value', was soviel bedeutet wie 'als Wert'. Dies erklärt auch gleich seine Funktion: Eine mit ByVal übergebene Variable wird als Wert übergeben, d.h. es wird eine Kopie erstellt und nur diese an den Prozedurkopf einer Funktion oder Sub weitergegeben. Wird in Folge in der Funktion der Wert geändert, hat das keine rückwirkenden Auswirkungen auf die ursprünglich übergebene Variable. Der Zusammenhang wird vielleicht durch die Erläuterungen zum Schlüsselwort
ByRef deutlicher.
Bitte beachten Sie:
Bis freeBASIC v0.16 wurden Variablen, wenn nichts anderes angegeben wurde, BYREF übergeben. In entsprechend höheren Versionen ist dies nur dann noch der Fall, wenn mit der Kommandozeilenoption
-lang deprecated
kompiliert wird; ansonsten werden bei Versionen von FreeBASIC ab v0.17 Variablen standardmäßig BYVAL übergeben.
Beispiel:
DECLARE SUB MySub (BYVAL a AS INTEGER, _
BYREF b AS INTEGER)
DIM AS INTEGER a = 1, b = 1
PRINT "Vor Subaufruf:"
PRINT "a = "; a
PRINT "b = "; b
PRINT
MySub a, b
PRINT "Nach Subaufruf:"
PRINT "a = "; a
PRINT "b = "; b
SUB MySub (BYVAL a AS INTEGER, _
BYREF b AS INTEGER)
a += 1
b += 1
PRINT "In der Sub:"
PRINT "a = "; a
PRINT "b = "; b
END SUB
Ausgabe:
Vor Subaufruf:
a = 1
b = 1
In der Sub:
a = 2
b = 2
Nach Subaufruf:
a = 1
b = 2Unterschiede:
zu QB:
- Variablen werden standardmäßig BYVAL übergeben, nicht mehr
BYREF, wie dies in QB und VB der Fall war.
zu älteren freeBASIC-Versionen
- Seit freeBASIC v0.17 muss mit der Kommandozeilenoption -lang deprecated kompiliert werden, damit Variablen standardmäßig BYREF übergeben werden, wie das in den vorherigen Versionen der Fall war. Ansonsten ist der Standard BYVAL.
Siehe auch:
BYREF
| Zusätzliche Informationen und Funktionen | ||||
|---|---|---|---|---|
|
||||




Versionen