Bei doppeltem Aufruf meckert der Compiler

Funktionen bei Templates (Bausteinen) meist weggelassen. Hier ein kleines
WorkAround, um diese Problem zu umgehen.
Das Beispiel ist jetzt für InitNetwork(), funktioniert nach entsprechender Anpassung
natürlich auch für die anderen Initfunktionen.
Code: Alles auswählen
CompilerIf Defined(InitNetworkEx, #PB_Procedure) = #False
Procedure InitNetworkEx()
Static IsInit = #False
If Not IsInit
IsInit = InitNetwork()
EndIf
ProcedureReturn IsInit
EndProcedure
Macro InitNetwork()
InitNetworkEx()
EndMacro
CompilerEndIf
; Beispiel, erzeugt normallerweise einen Fehler
InitNetwork()
InitNetwork()

Der Code muss aber vor dem ersten InitNetwork() eingefügt werden!