[python-win32] no array returned in output parameter

Enric Jaen enricjaen at yahoo.es
Mon Dec 15 20:57:01 CET 2008


Thanks for the explanation, Tim.
I am 100 % sure because I have tested it with a VB program and it returns data.

As I have seen from previous posts in this mailinglist, the memory is allocated at the COM side. 

This also returns a null array:

a,b = r.getFilters()



/Enric 



----- Mensaje original ----
De: Tim Roberts <timr at probo.com>
Para: Python-Win32 List <python-win32 at python.org>
Enviado: lunes, 15 de diciembre, 2008 19:11:42
Asunto: Re: [python-win32] no array returned in output parameter

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.

_______________________________________________
python-win32 mailing list
python-win32 at python.org
http://mail.python.org/mailman/listinfo/python-win32



      


More information about the python-win32 mailing list