You need to check the value being sent. .NULL. may need to be sent instead of making it optional.
One other thing, when creating this type of thing you need to take into account what the API contract looks like. Passing Booleans is very problematic. What to .t. and .f. mean here? When you look at your code, it's not known. Try simulating an enum and send that instead.
>Hi,
>
>I think I know the answer to this but wanted to see if there really is a solution:
>
>I want to use a method with a few of the parameters as optional e.g.
>
>
>loSettings.SetObject("txtLastname",,.T.,.F.)
>
>
>and then in the method code I have this:
>
>
>LPARAMETERS tcObjectName, txValue, tlVisible, tlEnabled
>
>
>where the 2nd parameter is not passed; PCOUNT() does not does help because I have passed the 3rd and 4th params.
>
>Of course in the method code, I get a default value for the second parameter as .F.; but that does not help me to know if it was passed or not because in this case the "value" could be a logical that was passed.
>
>I realize that I could change the order of the parameters so that txValue is last and then PCOUNT() works but the 2 most commonly used parameters are the first 2 and so I would rather have them in the order they are.
>
>What I need is function that tells me if the 2nd paramter ws passed something like IF PARAMETER(2) = .T.
>
>or I need a way for the parameters to default to .null. or something if nothing passed.
>
>Am I missing something that is in the help file?
>
>Thanks,
>
>Albert Gostick
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer