
I try to call procedure by name without examine before the number of parameters to send
It's really difficult for me, i have search to do it under this format without succes

Code: Select all
CallProcedure(NameOfProcedure$, Param1$, Param2$)

Code: Select all
AllParametersInOneVariable$ = "Param1, Param2"
CallProcedure(NameOfProcedure$, AllParametersInOneVariable$)

Code: Select all
Prototype AllMessages(Param1$ = "", Param2$ = "", Param3$ = "")
Runtime Procedure MessageOneParameter(Text.s)
MessageRequester("Only one Parameter", Text)
EndProcedure
Runtime Procedure MessageTwoParameters(Text1.s, Text2.s)
MessageRequester("Two parameters", Text1 + Text2)
EndProcedure
Runtime Procedure MessageThreeParameters(Text1.s, Text2.s, Text3.s)
MessageRequester("Three parameters", Text1 + Text2 + Text3)
EndProcedure
Procedure CallProcedure(NomProcedure.s, Parameter$)
*PtrProc = GetRuntimeInteger(NomProcedure + "()")
Call.AllMessages = *PtrProc
MaxParam = CountString(Parametre$, ",") + 1
Protected Dim ArrayParams.s(MaxParam)
For i = 1 To MaxParam
ArrayParams(i) = StringField(Parameter$, i, ",")
Next
Select MaxParam
Case 1
Call(ArrayParams(1))
Case 2
Call(ArrayParams(1), ArrayParams(2))
Case 3
Call(ArrayParams(1), ArrayParams(2), ArrayParams(3))
EndSelect
FreeArray(ArrayParams())
EndProcedure
CallProcedure("MessageOneParameter", "Hello it's KCC")
CallProcedure("MessageTwoParameters", "Hello it's KCC a second time, but it's more long")
CallProcedure("MessageThreeParameters", "Hello it's KCC another time, and this time, it's one time too much")
Have a good day