Es wird IMMER eine Adresse über den Softstack übergeben

Byref die Adresse der Variablen selbst
byval die adresse einer Kopie der Variablen

welcher typ die variable ist, ist egal.

declare sub _nixis ( byval arg as irgendwas) ---> Kopie
declare sub _nixis ( byref arg as irgendwas) ---> direkt

"Byref" nimmt Bascom als default an, wenn nix angegeben wird

bedeutet:
das erstellen der Kopie ist ein Overhead (bei Literalen aber notwendig, denn vorher gibt's ja nix zum adressieren)

sub/func-Argumente, die mit "byref" übergeben werden, können auch von der Sub verändert werden

umgekehrt:
sub/func-Argumente, die mit "byval" übergeben werden, können von der Sub hemmungslos für private Zwecke vernudelt werden, ohne dass die eigentliche Variable verändert wird.

btw: Für die Kopien wird das "Frame" verwendet.


http://www.rn-wissen.de/index.php/Bascom_Inside