Hatte ich mal zur Demonstration geschrieben:
Du darfst nicht byval übergeben, sondern byref, das ist Standard und muss nicht extra dazu geschrieben werden.Code:$Regfile = "m32def.dat" $Crystal = 8000000 $hwstack = 32 $swstack = 8 $framesize = 24 Const ArSz = 5 Dim Ar(ArSz) As Byte Dim Sz As Byte Dim Rslt As Word Declare Function Addall(ArToAdd As Byte , ByVal ArSize As Byte) As Word Ar(1) = 10 Ar(2) = 25 Ar(3) = 9 Ar(4) = 21 Ar(5) = 66 Rslt = Addall(Ar(1) , ArSz) Print Rslt End Function Addall(ArToAdd As Byte , ByVal ArSize As Byte) As Word Local idx As Byte Local rt As Word rt = 0 For idx = 1 to ArSz rt = rt + ArToAdd(idx) Next Addall = rt End Function
Byref ist einen Zeiger und für den Zugriff auf's ganze Array muss der auf das erste Arrayelement zeigen, deswegen Addall(Ar(1) , ArSz).
Eine implizite Übergabe per byval is soweit ich weiß nicht vorgesehen, so wie Dein Code aussieht auch nicht nötig. Du kannst ohne Weiteres mit dem Originalarray arbeiten, solange es durch die aufgerufene Routine nicht ungewollt verändert wird.







Zitieren


Lesezeichen