DeclareModule optional?
Verfasst: 11.12.2014 11:08
Hier stand mal was von CodeCommander. Aber er wollte seinen Post unbedingt löschen.
Richtig. Weil Fred das syntaktisch so festgelegt hat. Das hat aber nichts mit dem "sehen" an sich zu tun.CodeCommander hat geschrieben:Dieser Post baut hierauf auf: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.Und wie?? >> Modul benötigt einen DeclareModule Abschnitt, bevor es erstellt wird.Nino hat geschrieben:Natürlich kann PB das Modul auch ohne DeclareModule sehen.
Zweck von DeclareModule ist es festzulegen, welche Teile des Modul öffentlich und welche Teile des Moduls privat sind.CodeCommander hat geschrieben:Der wäre?Nino hat geschrieben:Sinn und Zweck von DeclareModule ist ein anderer.
Referenz-Handbuch hat geschrieben:Nur auf die im DeclareModule Abschnitt deklarierten Elemente kann von außerhalb des Moduls zugegriffen werden. Der gesamte Code im Module Abschnitt wird "privat" für dieses Modul gehalten.
Code: Alles auswählen
DeclareModule bla
EndDeclareModule
Module bla
Procedure hui()
Debug "buh"
EndProcedure
hui()
EndModule
NicTheQuick hat geschrieben:Ich glaube so ganz ohne öffentliche Funktionen, Variablen oder Strukturen macht ein Modul wenig Sinn, oder?
Code: Alles auswählen
EnableExplicit
DeclareModule PluginMap
Declare.i addPlugin(moduleName.s)
Declare.i pluginCount()
Declare.s getPlugin(index.i)
EndDeclareModule
Module PluginMap
Global NewMap pluginMap.i()
Procedure.i addPlugin(pluginName.s)
pluginName = LCase(pluginName)
If (FindMapElement(pluginMap(), pluginName))
Debug "[ERR] Module already added: '" + pluginName + "'."
ProcedureReturn #False
EndIf
ProcedureReturn AddMapElement(pluginMap(), pluginName)
EndProcedure
Procedure.i pluginCount()
ProcedureReturn MapSize(pluginMap())
EndProcedure
Global Dim plugins.s(0)
Procedure.s getPlugin(index.i)
Protected i.i
If (ArraySize(plugins()) <> pluginCount())
ReDim plugins(pluginCount())
ForEach pluginMap()
plugins(i) = MapKey(pluginMap())
i + 1
Next
EndIf
If (index >= pluginCount() Or index < 0)
ProcedureReturn ""
EndIf
ProcedureReturn plugins(index)
EndProcedure
EndModule
DeclareModule bla
EndDeclareModule
Module bla
PluginMap::addPlugin(#PB_Compiler_Module)
Runtime Procedure.i init()
Debug "Modul bla initialisiert."
EndProcedure
EndModule
DeclareModule TollerEffekt
EndDeclareModule
Module TollerEffekt
PluginMap::addPlugin(#PB_Compiler_Module)
Runtime Procedure.i init()
Debug "Modul TollerEffekt initialisiert."
EndProcedure
EndModule
; Initialisiere alle Plugins
Define.i pluginCount.i = PluginMap::pluginCount()
Define.i i
For i = 0 To pluginCount - 1
CallFunctionFast(GetRuntimeInteger(PluginMap::getPlugin(i) + "::init()"))
Next