[python-win32] no array returned in output parameter

Tim Roberts timr at probo.com
Mon Dec 15 19:11:42 CET 2008


Enric Jaen wrote:
> I have the following method generated by makepy.py:
>
> def GetFilters(self, pvarFilterArray=defaultNamedNotOptArg, pnArraySize=defaultNamedNotOptArg):
>         """method GetFilters"""
>         return self._oleobj_.InvokeTypes(68, LCID, 1, (24, 0), ((16396, 0), (16387, 0)),pvarFilterArray
>             , pnArraySize)
>
>
> As you see, the method has two output params: The first is of type pointer to a Variant (which the COM object should fill with an array) and the second a pointer to a type long.
>
> But when I invoke that method it returns a tuple as if there were no data:
>   
>>>> r.GetFilters()
>>>>         
> (None, 0)
>
> i.e array is Null with size is 0. 
>
> The same is happening with other methods that have an output array.
>
>
> - Which type represents 16396 ? 
>   

That's 12 + 0x4000, so it's VT_VARIANT + VT_BYREF.  That is, a variant
output parameter.  16387 is VT_I4 + VT_BYREF, or a long integer output
parameter.

Are you 100% convinced that the object has an array of filters to
return?  How do you know?

-- 
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.



More information about the python-win32 mailing list