Python COM : Wierd Behaviour

Hafeez Bana hafeez at lancom.com.au
Thu May 18 00:52:27 EDT 2000


Hi,

I have a python object for generating formatted Order documents  which I
have exposed via
COM so that the API could be used by some order taking software written
in Delphi 4. The Python version in use is 1.5.2.

The code has been working fine for a couple of days and then yesterday
it kept on raising the following error. "Unexpected Python Error.
Exception TypeError: too many arguments; expected 1 got 2" on a method
in the object called "printToFile" (which writes out the document to a
specified file name. The actual method declaration is 

  def printToFile(self,py_uni_filename):

The code has been working fine so far. So in an effort to debug it
further (I suspected that some mandatory fields in the document were
being left out which turns out not to be true)  I implemented another
function "def rawPrint(self):" which returns a string representation of
objects field values. This function calls no other functions..it simply
returns a string representation of a list via str(self.document_values).
Surprisingly rawPrint fails with the same error as printToFile. I
changed rawPrint to do nothing ie.

  def rawPrint(self):
      pass

and even to 

  def rawPrint(self):
      return 1

The same error keeps on being raised "Unexpected Python Error. Exception
TypeError: too many arguments; expected 1 got 2". Even stranger .. the
printToFile method is now working, add an extra function rawPrint seems
to fix other problems!!!

I then changed rawPrint to

   def rawPrint(self, value = 9):
      return 1

and rawPrint calls stops raising the above exception and everything is
working withouth a hitch!!!

I have sample test code written in python and create tried creating the
COM object via win32com.client.Dispatch and
win32com.client.dynaminc.Dispatch but the python test code reports no
errors. Only test code that is written in delphi has this strange
behavior.

Does anyone have an ideas,suggestions. The code seems to be
temperamental :)

Thanks,
Hafeez



More information about the Python-list mailing list