Man muss nur die Adresszuweisung in das Modul verlegen. Das ist alles!
Hier der geänderte Code
Code: Alles auswählen
DeclareModule Quotes
#STR_CHAR_DoubleQuote = 34 ; "
#STR_CHAR_SingleQuote = 39 ; '
Declare.s AddQuotes_Classic(String$, cQuote.c=#STR_CHAR_DoubleQuote)
Prototype.s AddQuotes(String$, cQuote.c=#STR_CHAR_DoubleQuote)
; Declare.s _AddQuotes_(*String, cQuote.c=#STR_CHAR_DoubleQuote) ; _AddQotes_ nur noch Private
Define MyAddQuotes.AddQuotes ; = @_AddQuotes_() ; die Adresszuweisung muss in's Modul
Define OhterAddQuotes.AddQuotes ; nur um zu sehen ob das geht!
EndDeclareModule
Module Quotes
Procedure.s AddQuotes_Classic(String$, cQuote.c=#STR_CHAR_DoubleQuote)
; ASCII-34 = ", ASCII-39 = '
ProcedureReturn Chr(cQuote) + PeekS(@String$) + Chr(cQuote)
;ProcedureReturn Chr(cQuote) + String$ + Chr(cQuote)
EndProcedure
Procedure.s _AddQuotes_(*String, cQuote.c=#STR_CHAR_DoubleQuote) ;
; ASCII-34 = ", ASCII-39 = '
ProcedureReturn Chr(cQuote) + PeekS(*String) + Chr(cQuote)
EndProcedure
MyAddQuotes = @_AddQuotes_() ; die Adresszuweisung im Modul und braucht _AddQuotes_ nicht mehr Public
EndModule
UseModule Quotes
Define s$, N, K, t_C, t_P, t_m
N = 100000
s$ = "Ich bin ein String und war ein String"
t_C = ElapsedMilliseconds()
For K=0 To N
res$ = AddQuotes_Classic(s$)
Next
t_C = ElapsedMilliseconds()-t_C
Debug "Classic : " + t_C + "ms"
Debug res$
Debug ""
t_P = ElapsedMilliseconds()
For K=0 To N
res$ = MyAddQuotes(s$)
Next
t_P = ElapsedMilliseconds()-t_P
Debug "Prototype : " + t_P + "ms"
Debug res$
Debug ""
MessageRequester("Ergebnis", "Classic : " + t_C + "ms" + #CRLF$ + "Prototype : " + t_P )