Hi all,

 

I found a strange behaviour when I use a python-COM-Server together with VB.

It seems that the first argument of a COM-Method that is passed by a VB-variable is set to VB-Nothing after the Method call.

 

For example if I use the code below: After calling

 

testSrvObj.SetValue what, value

 

what is deleted, but not value. But after calling

 

            testSrvObj.SetValue "ABC", value

 

value is deleted.

 

 

Has anybody an idea what is the problem?

 

Ciao,

  Frank

 

 

 

------------------testcall.vbs----------------------------------

Dim testSrvObj, what, value, retvalue

Set testSrvObj = CreateObject("TestSrv.Application")

 

value = "ABCValue"

what = "ABC"

 

msgbox("before: what ="& what & "  value ="& value)

testSrvObj.SetValue what, value

msgbox("after1: what ="& what & "  value ="& value)

testSrvObj.SetValue "ABC", value

msgbox("after2:  value ="& value)

retvalue = testSrvObj.GetValue("ABC")

msgbox("retvalue="& retvalue)

------------------testcall.vbs---------------------------------

 

 

 

-------------------testsrve.py--------------------------------

import pythoncom

 

class TestSrv(object):

 

    _reg_clsid_ = '{C7B89AAC-99B7-48A1-8088-D77A867CBB0C}'

    _reg_desc_ = 'TestSrv COM+ Server'

    _reg_progid_ = 'TestSrv.Application'

    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER

    _public_methods_ = ['SetValue', 'GetValue']

   

    def __init__(self):

        self.ABC = ''

       

    def SetValue(self, what, newval):

        if what == 'ABC':

            self.ABC = newval

           

    def GetValue(self, what):

        if what == 'ABC':

            return self.ABC

 

if __name__=='__main__':

    import win32com.server.register

    win32com.server.register.UseCommandLine(TestSrv, debug=0)

-------------------testsrve.py--------------------------------

 

 

 

 

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

Reply via email to