Die Verwendung von Byval/Byref habe ich gerade durch Ausprobieren verstanden:
Code:
Dim X as Byte
Dim Ergebnis as Byte
Declare Function abc (a as Byte) as Byte
Do
Ergebnis = abc(x)
Loop
Function abc (a as Byte)
Shift a , left , 2
abc = a
End Function
End
Diese Variante verändert beim zweimaligen Schieben der übergebenen Variable a ebenfalls die globale (Ursprungs-) Variable x, da ja die Variable gar nicht "real" an die Funktion übergeben wurde, sondern nur die Adresse der Variable x. Das ist warscheinlich schnell und speichersparend, aber in diesem Fall doof und unerwünscht.
Mit der Verwendung von byval wird x einfach kopiert und dieser Klon wird dann in der Funktion geschoben und wieder zurückkopiert.
Dazu noch eine Frage: Wird der Speicher nach verlassen der Funktion wieder freigegeben?
Schön langsam wirds ja...
Lesezeichen