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
Lesezeichen