Re: passing an array of variant in vb to a python COM object = win32com bug ?

2007-05-04 Thread vml
On 4 mai, 06:56, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote:
> En Thu, 03 May 2007 09:41:57 -0300,vml<[EMAIL PROTECTED]> escribió:
>
> > On 3 mai, 14:20, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote:
> >> En Thu, 03 May 2007 04:54:43 -0300,vml<[EMAIL PROTECTED]>
> >> escribió:
>
> >> > I have a python com object which contains a method to inverse an array
> >> > in vb 6 the definition of the class is :
>
> > I just tried to replace the *val by SqVal(self,val) and call the
> > method in vb but it crashes down :
>
> > "when refilling safe array the sequence must have the same number of
> > dimension as the existing array"
>
> That can't happen with your Python code below, so it must be on the
> caller. Maybe you wrote something like: xx=something.SqVal(yy) and xx,yy
> are declared of different sizes.
>

It is true that I call the python routine like that in vb :


 toto = obj.SqVal(ty)

If I am understanding well I need to pass an array of 2x2 and I should
retireve an array of variant of 2x2 

I tried to do that :
vb6 :

Dim obj As Object
Dim toto(1, 1, 2) As Variant

Set obj = CreateObject("Python.Fop")
Dim ty(1, 1, 2) As Variant

ty(0, 0, 0) = 1
ty(0, 1, 0) = 2
ty(0, 0, 1) = 3
ty(0, 0, 2) = 7
ty(0, 1, 1) = 4
ty(0, 1, 2) = 45

ty(1, 0, 0) = 1
ty(1, 1, 0) = 2
ty(1, 0, 1) = 3
ty(1, 0, 2) = 7
ty(1, 1, 1) = 4
ty(1, 1, 2) = 45



toto = obj.SqVal(ty)



but it is saying that the compiler can not assign the array toto at
the line toto=obj.SqVal() hum strange .



any ideas ?


Thank you for your help !






> >  def SqVal(self,val):
> > ## ...
> > return val
>
> > By the way Do you have any idea to debug the com server script ? ( I
> > would like to know if a can access the value in the function while
> > calling it from vb 6)
>
> Write a log file as suggested, or use OutputDebugString with the DebugView
> program fromwww.sysinternals.com
>
> --
> Gabriel Genellina


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: passing an array of variant in vb to a python COM object = win32com bug ?

2007-05-03 Thread Gabriel Genellina
En Thu, 03 May 2007 09:41:57 -0300, vml <[EMAIL PROTECTED]> escribió:
> On 3 mai, 14:20, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote:
>> En Thu, 03 May 2007 04:54:43 -0300, vml <[EMAIL PROTECTED]>  
>> escribió:
>>
>> > I have a python com object which contains a method to inverse an array
>> > in vb 6 the definition of the class is :
>>
> I just tried to replace the *val by SqVal(self,val) and call the
> method in vb but it crashes down :
>
> "when refilling safe array the sequence must have the same number of
> dimension as the existing array"

That can't happen with your Python code below, so it must be on the  
caller. Maybe you wrote something like: xx=something.SqVal(yy) and xx,yy  
are declared of different sizes.

>  def SqVal(self,val):
> ## ...
> return val
>
> By the way Do you have any idea to debug the com server script ? ( I
> would like to know if a can access the value in the function while
> calling it from vb 6)

Write a log file as suggested, or use OutputDebugString with the DebugView  
program from www.sysinternals.com

-- 
Gabriel Genellina
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: passing an array of variant in vb to a python COM object = win32com bug ?

2007-05-03 Thread Larry Bates
vml wrote:
> On 3 mai, 14:20, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote:
>> En Thu, 03 May 2007 04:54:43 -0300, vml <[EMAIL PROTECTED]> escribió:
>>
>>
>>
>>> I have a python com object which contains a method to inverse an array
>>> in vb 6 the definition of the class is :
>>> class Fop:
>>> _public_methods_ = [ 'SqVal' ]
>>> def SqVal(self,*val):
>>> #vol=(val[0][0],val[0][1])
>>> #mat1=mat((vol))
>>> #up=linalg.inv(mat1)
>>> return str(val)#up
>>> _reg_verprogid_ = "Python.Fop.3"
>>> _reg_progid_ = "Python.Fop"
>>> _reg_desc_ = "Python Fop"
>>> _reg_clsid_ = "{30BD3490-2632-11cf-AD5B-524153480001}"
>>> I pass to this method an array of variant which is the matrix to
>>> invert like that:
>>> vb6 code :
>>>Set obj = CreateObject("Python.Fop")
>>> Dim ty(1, 1) As Variant
>>> ty(0, 0) = 1
>>> ty(1, 0) = 2
>>> ty(0, 1) = 3
>>> ty(1, 1) = 4
>>> toto = obj.SqVal(ty)
>>> when I dispaly toto as str(val) I obtain the following tuple "(((1,
>>> 3), (2, 4)),)" which is not usable 
>>> Do you have an idea to explain this strange behaviour ?
>> This is the expected behaviour. Writing it completely in Python:
>>
>> py> def SqVal(*val):
>> ...   return str(val)
>> ...
>> py> ty=((1,3),(2,4))
>> py> SqVal(ty)
>> '(((1, 3), (2, 4)),)'
>>
>> The *val parameter receives a tuple, whose elements are the positional
>> arguments used when calling the function. As you call the function with a
>> single argument, val receives a tuple with a single element.
>> Perhaps you want to write it as:
>>
>> py> def SqVal(val):
>> ...   print val[0][0]
>> ...   print val[0][1]
>> ...   print val[1][0]
>> ...   print val[1][1]
>> ...
>> py> SqVal(ty)
>> 1
>> 3
>> 2
>> 4
>>
>> (Of course, if used as a Fop method, dont forget the "self" parameter)
>>
>> --
>> Gabriel Genellina
> 
> I just tried to replace the *val by SqVal(self,val) and call the
> method in vb but it crashes down :
> 
> "when refilling safe array the sequence must have the same number of
> dimension as the existing array"
> 
> my python code is now :
> 
>  def SqVal(self,val):
> ##volr=[val[0][0][i] for i in range(size(val,2))]
> ##voli=[val[0][1][i] for i in range(size(val,2))]
> ##mat1=mat(volr)+1j*mat(voli)
> ##up=linalg.pinv(mat1)
> ##out=up.real.tolist()
> ##out.extend(up.imag.tolist())
> return val
> 
> By the way Do you have any idea to debug the com server script ? ( I
> would like to know if a can access the value in the function while
> calling it from vb 6)
> 
> 
> 
> 
> tahnks a lot !
> 
> 
Debugging COM objects is best done using logging module or at least
writing to a file during processing.  You can review the log file
to see what was going on.

-Larry
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: passing an array of variant in vb to a python COM object = win32com bug ?

2007-05-03 Thread vml
On 3 mai, 14:20, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote:
> En Thu, 03 May 2007 04:54:43 -0300, vml <[EMAIL PROTECTED]> escribió:
>
>
>
> > I have a python com object which contains a method to inverse an array
> > in vb 6 the definition of the class is :
>
> > class Fop:
> > _public_methods_ = [ 'SqVal' ]
> > def SqVal(self,*val):
> > #vol=(val[0][0],val[0][1])
> > #mat1=mat((vol))
> > #up=linalg.inv(mat1)
> > return str(val)#up
> > _reg_verprogid_ = "Python.Fop.3"
> > _reg_progid_ = "Python.Fop"
> > _reg_desc_ = "Python Fop"
> > _reg_clsid_ = "{30BD3490-2632-11cf-AD5B-524153480001}"
>
> > I pass to this method an array of variant which is the matrix to
> > invert like that:
> > vb6 code :
>
> >Set obj = CreateObject("Python.Fop")
> > Dim ty(1, 1) As Variant
>
> > ty(0, 0) = 1
> > ty(1, 0) = 2
> > ty(0, 1) = 3
> > ty(1, 1) = 4
>
> > toto = obj.SqVal(ty)
>
> > when I dispaly toto as str(val) I obtain the following tuple "(((1,
> > 3), (2, 4)),)" which is not usable 
>
> > Do you have an idea to explain this strange behaviour ?
>
> This is the expected behaviour. Writing it completely in Python:
>
> py> def SqVal(*val):
> ...   return str(val)
> ...
> py> ty=((1,3),(2,4))
> py> SqVal(ty)
> '(((1, 3), (2, 4)),)'
>
> The *val parameter receives a tuple, whose elements are the positional
> arguments used when calling the function. As you call the function with a
> single argument, val receives a tuple with a single element.
> Perhaps you want to write it as:
>
> py> def SqVal(val):
> ...   print val[0][0]
> ...   print val[0][1]
> ...   print val[1][0]
> ...   print val[1][1]
> ...
> py> SqVal(ty)
> 1
> 3
> 2
> 4
>
> (Of course, if used as a Fop method, dont forget the "self" parameter)
>
> --
> Gabriel Genellina

I just tried to replace the *val by SqVal(self,val) and call the
method in vb but it crashes down :

"when refilling safe array the sequence must have the same number of
dimension as the existing array"

my python code is now :

 def SqVal(self,val):
##volr=[val[0][0][i] for i in range(size(val,2))]
##voli=[val[0][1][i] for i in range(size(val,2))]
##mat1=mat(volr)+1j*mat(voli)
##up=linalg.pinv(mat1)
##out=up.real.tolist()
##out.extend(up.imag.tolist())
return val

By the way Do you have any idea to debug the com server script ? ( I
would like to know if a can access the value in the function while
calling it from vb 6)




tahnks a lot !


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: passing an array of variant in vb to a python COM object = win32com bug ?

2007-05-03 Thread Gabriel Genellina
En Thu, 03 May 2007 04:54:43 -0300, vml <[EMAIL PROTECTED]> escribió:

> I have a python com object which contains a method to inverse an array
> in vb 6 the definition of the class is :
>
> class Fop:
> _public_methods_ = [ 'SqVal' ]
> def SqVal(self,*val):
> #vol=(val[0][0],val[0][1])
> #mat1=mat((vol))
> #up=linalg.inv(mat1)
> return str(val)#up
> _reg_verprogid_ = "Python.Fop.3"
> _reg_progid_ = "Python.Fop"
> _reg_desc_ = "Python Fop"
> _reg_clsid_ = "{30BD3490-2632-11cf-AD5B-524153480001}"
>
> I pass to this method an array of variant which is the matrix to
> invert like that:
> vb6 code :
>
>
>Set obj = CreateObject("Python.Fop")
> Dim ty(1, 1) As Variant
>
> ty(0, 0) = 1
> ty(1, 0) = 2
> ty(0, 1) = 3
> ty(1, 1) = 4
>
> toto = obj.SqVal(ty)
>
>
> when I dispaly toto as str(val) I obtain the following tuple "(((1,
> 3), (2, 4)),)" which is not usable 
>
> Do you have an idea to explain this strange behaviour ?

This is the expected behaviour. Writing it completely in Python:

py> def SqVal(*val):
...   return str(val)
...
py> ty=((1,3),(2,4))
py> SqVal(ty)
'(((1, 3), (2, 4)),)'

The *val parameter receives a tuple, whose elements are the positional  
arguments used when calling the function. As you call the function with a  
single argument, val receives a tuple with a single element.
Perhaps you want to write it as:

py> def SqVal(val):
...   print val[0][0]
...   print val[0][1]
...   print val[1][0]
...   print val[1][1]
...
py> SqVal(ty)
1
3
2
4

(Of course, if used as a Fop method, dont forget the "self" parameter)

-- 
Gabriel Genellina
-- 
http://mail.python.org/mailman/listinfo/python-list


passing an array of variant in vb to a python COM object = win32com bug ?

2007-05-03 Thread vml
I have a python com object which contains a method to inverse an array
in vb 6 the definition of the class is :

class Fop:
_public_methods_ = [ 'SqVal' ]
def SqVal(self,*val):
#vol=(val[0][0],val[0][1])
#mat1=mat((vol))
#up=linalg.inv(mat1)
return str(val)#up
_reg_verprogid_ = "Python.Fop.3"
_reg_progid_ = "Python.Fop"
_reg_desc_ = "Python Fop"
_reg_clsid_ = "{30BD3490-2632-11cf-AD5B-524153480001}"

I pass to this method an array of variant which is the matrix to
invert like that:
vb6 code :


   Set obj = CreateObject("Python.Fop")
Dim ty(1, 1) As Variant

ty(0, 0) = 1
ty(1, 0) = 2
ty(0, 1) = 3
ty(1, 1) = 4

toto = obj.SqVal(ty)


when I dispaly toto as str(val) I obtain the following tuple "(((1,
3), (2, 4)),)" which is not usable 

Do you have an idea to explain this strange behaviour ?

thank you !

-- 
http://mail.python.org/mailman/listinfo/python-list