Announcement

Collapse
No announcement yet.

Optional Parameters ?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Optional Parameters ?

    How do I code an OBJECT CALL that has an optional parameter? If I place both parameters the specification says that the second parameter will be ignored. I want to use the second parameter only.

    From the "inc" file:
    Code:
    Member Call Move <1836021349> (Opt In PB_To As Variant<0>, Opt In By As Variant<1>)
    My Code:
    Code:
    OBJECT CALL myRectangle.move(,vtempby)
    or
    Code:
    OBJECT CALL myRectangle.move(NOTHING,vtempby)
    generate "Syntax error"

    This code compiles but with the wrong result:
    Code:
    OBJECT CALL myRectangle.move(vtempto,vtempby)
    Last edited by Robert Wallace; 30 Jul 2009, 10:03 AM. Reason: syntax

  • #2
    Code:
    LOCAL vMyOptionalParamIamNotPassing AS VARIANT
    
       LET  vMyOptionalParamIamNotPassing = ERROR %DISP_E_PARAMNOTFOUND
    
       OBJECT CALL myMethod (vMyOptionalParamIAmNotPassing, [ other params])
    MCM
    Michael Mattias
    Tal Systems (retired)
    Port Washington WI USA
    [email protected]
    http://www.talsystems.com

    Comment


    • #3
      When you use the OPTIONAL clause in a procedure's parameter list, that parameter and all parameters to the right of it are optional as well. When calling the procedure with optional parameters, you still need to supply them in the same order as they were defined. In your case, PB_To and By are both optional so you can call it with myMethod(), myMethod(PB_To) or myMethod(PB_To, By) but you can't call it with myMethod(By) as your procedure would be using the By as PB_To so you won't get the results you expect.

      You have to supply somethng for PB_To even if you only intend to pass By and I think Michael's post addresses that.
      Jeff Blakeney

      Comment


      • #4
        Many thanks for the explanation - I am puzzled by a couple of things:

        1. Is MCM's method documented anywhere?

        2. Does a called routine, expecting an optional variant containing an Array of two elements, interpret a large negative number as something to be ignored?

        Bob

        Comment


        • #5
          >. Is MCM's method documented anywhere?

          Not that I could ever find .... but there IS a 'document improvement suggestion' I submitted to put this exact information on both the LET [with Variants] and the OBJECT CALL pages of the help file.

          I orginally got this info here (sorry can't recall from whom) ; it worked just ducky with ADO; or maybe it was Excel. Or maybe it was both.

          MCM
          Michael Mattias
          Tal Systems (retired)
          Port Washington WI USA
          [email protected]
          http://www.talsystems.com

          Comment


          • #6
            "If an optional argument to an Automation method is left blank, do not pass a VARIANT of type VT_EMPTY. Instead, pass a VARIANT of type VT_ERROR with a value of DISP_E_PARAMNOTFOUND."

            See: http://msdn.microsoft.com/en-us/library/ms221627.aspx
            Forum: http://www.jose.it-berater.org/smfforum/index.php

            Comment


            • #7
              Many thanks,

              Bob

              ----------------------------------------------------
              Added later.

              I have just found that MCM's code is kind of documented in the Help of PBWin9.01:
              LET vrntvar = ERROR numr

              This form assigns a specific COM error number, which is usually a COM specific error, such as %E_NOINTERFACE, etc.
              Last edited by Robert Wallace; 31 Jul 2009, 02:48 AM.

              Comment


              • #8
                > have just found that MCM's code is kind of documented in the Help of PBWin9.01:

                Funny, you picked one of the "documentation complaints" I sent in.

                So, a specific COM error number is usually a COM specific error? Thank goodness for that info: Who'd-a-thunk-it?
                Michael Mattias
                Tal Systems (retired)
                Port Washington WI USA
                [email protected]
                http://www.talsystems.com

                Comment

                Working...
                X