>IF PCOUNT() <= "number of required params" >>Then for the optional parameters, I check the data type. If logical and false, it wasn't passed, so I give it a default value. Something like:
>tcParam5 = IIF(VARTYPE(tcParam5) = "L" AND !tcParam5, "default value", tcParam5) >>>This is a bit long, but I need to explain my question clearly.
>>PROCEDURE MyProc(aSomeArray AS Variant) AS Boolean HELPString "This method does..." >>WITH This >> >> IF PCOUNT() = 1 >> >> IF TYPE("aSomeArray[1]") # T_UNDEFINED >> >> ** Code for this method goes here >> >> ELSE >> ERROR 232, "aSomeArray" && 'aSomeArray' is not an array >> ENDIF >> >> ELSE >> ERROR 1229 && Too few arguments >> ENDIF >> >>ENDWITH >>>>
>>PROCEDURE MyProc(aSomeArray AS Variant) AS Boolean HELPString "This method does..." >>WITH This >> >> IF .CheckParams("MyProc", @aSomeArray) >> >> ** Code for this method goes here >> >> ENDIF >> >>ENDWITH >> >> >>HIDDEN PROCEDURE CheckParams(sProcName, p1, p2, p3, p4, p5) AS Boolean >> >> LOCAL bRetVal AS Boolean >> bRetVal = TRUE >> >> WITH This >> >> DO CASE >> >> CASE sProcName = "MyProc" >> DO CASE >> CASE TYPE("p1") # T_LOGICAL >> ERROR 1229 && Too few arguments >> bRetVal = TRUE >> >> CASE TYPE("p1[1]") # T_UNDEFINED >> ERROR 232, "aSomeArray" && 'aSomeArray' is not an array >> bRetVal = TRUE >> >> ENDCASE >> >> ENDCASE >> >> ENDWITH >> >> RETURN bRetVal >> >>ENDPROC >>>>