COM bites - help please
Bill Tutt
billtut at microsoft.com
Fri Jul 23 07:44:07 EDT 1999
More information about the Python-list mailing list
Fri Jul 23 07:44:07 EDT 1999
- Previous message (by thread): COM bites - help please
- Next message (by thread): COM bites - help please
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> From: Karl Putland [mailto:kperacles at geocities.com] > I've got a couple of pyCOM things that are kicking my @$$! > > 1. Trying to wrap a list of instances into a > util.Collection. All instances have been prepped with > _public_methods_ and _public_attrs_ and have been wrapped > with a call to win32com.server.util.wrap(field) Trying to > access the Collection from a com instance produces the > following error. > [...] > >>> c1.fields # This is a util.Collection(list of > GMField instances) > Traceback (innermost last): > File "<pyshell#56>", line 1, in ? > c1.fields > File "D:\Python\win32com\client\dynamic.py", line 394, in > __getattr__ > raise pythoncom.com_error, details > com_error: (-2147467259, 'Unspecified error', None, None) > Not having the source makes it more difficult to help here... If memory serves given a list of Python instances that can be wrapped as COM objects, the way to make a collection is: collection = util.Collection(map(lambda x: util.wrap(x), list) > 3. PyUnicode objects bit me in the ass when strings are > passed into methods and manipulated. > class Foo: > <COM stuff> > def bar(self, somestring): > somestring = string.upper(somestring) > return somestring > > >>>foo = win32com.client.Dispatch("Python.Foo") > >>>foo.bar("Hello World") > PyUnicode strings have an upper and a lower method so this becomes: def bar(self, somestring): somestring = somestring.upper() return somestring > Some traceback about TypeError PyUnicode. > > Causing a need to change bar to > def bar(self, somestring): > somestring=str(somestring) > somestring = string.upper(somestring) > return somestring > This change needs to be made in ALL methods that accept and > manipulate strings??? > This is the bane of Unicode, the string module can't handle them. You either have to pass Unicode into functions that like Unicode, or convert the Unicode into a normal Python string. Not much else you can do about this. It's been rumored that Unicode support will get better in Python 1.6. > Is there a better method than COM for allowing someone who > uses VB access to Python objects, short of converting all of > the VB users to Python or resorting to reimplementing in VB > or C++? Using Python is good. :) But yes, this is the easiest way for Python and VB to talk to each other. > The COM interface I've been able to expose is > sufficient for now but does not allow some of the access that > I have in Python. Maybe that's good in the end? > I think so. :) Hope this helps out a little bit... Bill
- Previous message (by thread): COM bites - help please
- Next message (by thread): COM bites - help please
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list