Danke euch beiden erstmal für die Hinweise!

Zitat Zitat von MagicWSmoke Beitrag anzeigen
Hatte ich mal zur Demonstration geschrieben:
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
Du darfst nicht byval übergeben, sondern byref, das ist Standard und muss nicht extra dazu geschrieben werden.
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.
Danke der Tipp mit Byref war die Lösung.
Nachdem ich das Byval durch Byref ersetzt habe klappt es. Genau so eine Zeigeroperation habe ich gesucht. Wusste nur nicht wo ich die finde
Vielen Dank nochmals an euch!