Doppeltes Init vermeiden
Verfasst: 12.04.2012 13:03
Es gibt in PB ja eine menge Libs, die ein "Init" benötigen, z.B. InitNetWork().
Bei doppeltem Aufruf meckert der Compiler
, deshalb werden diese
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.
Das ist jetzt nichts weltbewegendes, aber manchmal kommt man einfach nicht drauf 
Der Code muss aber vor dem ersten InitNetwork() eingefügt werden!
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!