Man muss man die Konstante in jedem Fall im Bereich "DeclareModul" deklarieren (sie ist dann nach außen hin sichtbar), andernfalls meckert der Compiler, dass die Prozedur nicht mit der Deklaration übereinstimmt.
Erreichen möchte ich, dass die Konstante #MY_DEFAULT auch im Bereich zwischen UseModule und UnUseModule unten im Hauptcode nicht sichtbar ist. Trotzdem soll diese Konstante als Defaultparameter für die Prozedur MyProc() dienen.
Wie kriegt man das hin?
Code: Alles auswählen
DeclareModule Test
; Erst wenn man die folgende Zeile auskommentiert, ist die Konstante #MY_DEFAULT wirklich privat,
; aber dann meckert der Compiler natürlich, dass er die Konstante für die Proceduredeklaration nicht kennt.
#MY_DEFAULT = $fffff ; <- auskommentieren
Declare MyProc(x.i,y.i,color.i=#MY_DEFAULT) ; <- auskommentieren
; Versucht man es dann mit so einem Dummy, dann meckert der Compiler, dass Prozedur und Prozedurdeklaration nicht übereinstimmen
; Wie kann ich es realisieren, dass ich eine Konstante als Defaultparameter nutzen kann, diese aber privat ist?
; Declare MyProc(x.i,y.i,color.i=0) ; <- einkommentieren
EndDeclareModule
Module Test
#MY_DEFAULT = $fffff
Procedure MyProc(x.i,y.i,color.i=#MY_DEFAULT)
;...
EndProcedure
EndModule
UseModule Test
; Zum prüfen, ob die Konstante wirklich komplett privat ist, hier einfach mal "#MY_" tippen
; Wenn die Autovervollständigung nicht anspringt, dann ist die Konstante privat.
UnuseModule Test