Seite 1 von 1

Modul: Private Konstante in Prozedurdeklaration verwenden?

Verfasst: 24.08.2020 16:04
von Kurzer
Ich möchte in einem Modul eine private Konstante als Default-Parameter für eine öffentliche Prozedur nutzen.
Die Prozedur soll ordnungsgemäß deklariert werden.

Code: Alles auswählen

DeclareModule MyMod
	EnableExplicit
	
	Declare Test(sParam.s)
	; Declare Test(sParam.s = #Default_Param)
EndDeclareModule

Module MyMod
	#Default_Param = "none"
	
	Procedure Test(sParam.s = #Default_Param)
		Debug sParam
	EndProcedure
EndModule
Hat jemand eine Idee wie man das hin bekommt ohne dass der Compiler meckert?
Momentan ist entweder die Konstante in der Deklaration nicht bekannt oder... wenn ich dort z.B. sParm="" eintrage, dann stimmt Deklaration mit Prozedur nicht überein.
In beiden Fällen kann man es nicht kompilieren.

Folgende Lösung geht zwar, aber ist ein bisschen uncharmant:

Code: Alles auswählen

	Procedure Test(sParam.s = "")
		If sParam = ""
			sParam = #Default_Param
		EndIf
		
		Debug sParam
	EndProcedure
Gruß Markus

Re: Modul: Private Konstante in Prozedurdeklaration verwende

Verfasst: 24.08.2020 16:33
von NicTheQuick
Man kann es mit einem extra Module tricksen:

Code: Alles auswählen

DeclareModule MyModConst
	#Default_Param = "none"
EndDeclareModule

Module MyModConst
EndModule


DeclareModule MyMod
	EnableExplicit
	
	UseModule MyModConst
	
	Declare Test(sParam.s = #Default_Param)
EndDeclareModule

Module MyMod
	Procedure Test(sParam.s = #Default_Param)
		Debug sParam
	EndProcedure
EndModule

; Das geht nicht
;Debug MyMod::#Default_Param

; Das auch nicht
;UseModule MyMod
;Debug #Default_Param

Re: Modul: Private Konstante in Prozedurdeklaration verwende

Verfasst: 25.08.2020 09:33
von Kurzer
Danke Nic. So werde ich es erstmal machen.