Thanks very much Mark! The buffer does work, it turns out I was using the COM object improperly. (Oops, sorry)
--- Mark Hammond <[EMAIL PROTECTED]> wrote: > > Hello, > > > > I'm having difficulty passing a VT_UI1 to a COM > > object. I've tried passing a list/tuple of bytes > but > > it's raising an exception. When I pass a buffer, > there > > is no exception but the returned IAutoLogPacket is > > None. What is "an array of bytes"? > > > > Here is the makepy generated method (I'm certain > I'm > > using early bound dispatch): > > > > # Result is of type IAutoLogPacket > > def ProcessPacket(self, > > packet=defaultNamedNotOptArg): > > """packet is an array of bytes""" > > ret = self._oleobj_.InvokeTypes(32, LCID, 1, (9, > 0), > > ((12, 1),),packet > > ) > > if ret is not None: > > ret = Dispatch(ret, 'ProcessPacket', > > '{568A44F9-6FB2-4814-8195-BCF6F1409288}', > > UnicodeToString=0) > > return ret > > The function is declared as taking a simple variant. > This means that > explicitly passing a buffer object should work - eg, > buffer('foo\0bar'), for > example. (If it was explicitly declared as a > VT_ARRAY | VT_UI8, passing a > simple string would work too) > > I just made a change to the win32com test suite to > confirm this. testvb.py > was changed to include: > > vbtest.VariantProperty = buffer('raw\0data') > if str(vbtest.VariantProperty) != 'raw\0data': > raise error, "Could not set the variant > buffer property correctly." > > This is similar to your example (although a property > is being used instead > of an arg to a method.) After setting the property > to the buffer, > re-reading the value results in an object > '<read-write buffer ptr > 0x00C5C7C0, size 8 at 0x00C5C7A0>' - hence the > conversion to string before > the comparison. However, this demonstrates to me > that VT_UI1 support in > variants is working fine. > > Probably the best way forward is to try and > reproduce your problem in the > win32com test suite... > > Hope this helps, > > Mark > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32