es stimmt, dass man eine Globale nicht übergeben muss, weder als Wert noch referenziert.
ich nehme mal an, du wolltest sie referenziert übergeben, dann den Inhalt auf den der Pointer zeigt verändern, und diesen Wert zurückgeben.
Code: Alles auswählen
Define aa.l = 10
Procedure.l addsub(*var.Long,i)
*var\l +1
ProcedureReturn *var\l
EndProcedure
; aa sollte von 10 bis 30 sein !!!!
For i=1 To 20
Debug addsub(@aa,1)
Next i
du musst den
Wert hinter dem Pointer verändern und zurückgeben.
um auf den direkt zugreifen zu können, musst du dem Pointer eine Struktur geben, nämlich Long.
das findet hier im Prozedurkopf statt.
dann kannst du auf das einzige Strukturfeld \l zugreifen, um an den Wert zu kommen,
sowohl für die Addition als auch für die Rückgabe.
und du musst beim Aufruf die Adresse deiner Variable übergeben (@) nicht ihren Wert.
Was willst du denn machen?
eventuell ist es noch etwas früh, dich mit pointern rumzuschlagen?
ist nicht bös' gemeint...

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.