<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: gmcdonald@infocomp.com - Found word(s) list error in the Text body - [Python-au] PythonCom Error</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>My guess is that since a tuple is a python object and not a SAFEARRAY the types are incompatible and hence no translation occurs.&nbsp; You probably have to insert it element by element. Be aware this is only an educated guess.</FONT></P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Christian Daldrup [<A HREF="mailto:Christian.Daldrup@gmx.de">mailto:Christian.Daldrup@gmx.de</A>] </FONT>
<BR><FONT SIZE=2>Sent: 09 February 2005 22:21</FONT>
<BR><FONT SIZE=2>To: python-au@python.net</FONT>
<BR><FONT SIZE=2>Subject: gmcdonald@infocomp.com - Found word(s) list error in the Text body - [Python-au] PythonCom Error</FONT>
</P>

<P><FONT SIZE=2>Hello,</FONT>
</P>

<P><FONT SIZE=2>I am new in this mailing list and so first greetings to all users.</FONT>
</P>

<P><FONT SIZE=2>I have written a C++ Com Dll (VS 6). In this Dll I declared a struct </FONT>
<BR><FONT SIZE=2>with a SafeArray(double) as a member.</FONT>
</P>

<P><FONT SIZE=2>My IDL implementation:</FONT>
<BR><FONT SIZE=2>-------</FONT>
<BR><FONT SIZE=2>typedef </FONT>
<BR><FONT SIZE=2>[ </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; uuid(19115fab-7e40-4505-9cc2-1a072fd4b033), </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; version(1.0), </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; helpstring(&quot;Parameters for Lib&quot;) </FONT>
<BR><FONT SIZE=2>]&nbsp;&nbsp;&nbsp; </FONT>
<BR><FONT SIZE=2>struct Params { </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;Distribution&quot;)] long lDistribution; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;Type&quot;)] long lType; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;a CalFlag&quot;)] long&nbsp; lACalFlag; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;b CalFlag&quot;)] long lBCalFlag; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;c CalFlag&quot;)] long lCCalFlag; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;d CalFlag&quot;)] long lDCalFlag; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;a&quot;)] double dA; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;b&quot;)] double dB; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;c&quot;)] double dC; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;d&quot;)] double dD; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;q&quot;)] double dQ; </FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; [helpstring(&quot;ks&quot;)] SAFEARRAY(double) dKs; </FONT>
<BR><FONT SIZE=2>} Params; </FONT>
<BR><FONT SIZE=2>-------</FONT>
</P>

<P><FONT SIZE=2>First I created a file with makepy.py</FONT>
<BR><FONT SIZE=2>Standard variables like &quot;dA&quot; I can set normally:</FONT>
<BR><FONT SIZE=2>-----</FONT>
<BR><FONT SIZE=2>import win32com.client</FONT>
<BR><FONT SIZE=2>myCom = win32com.client.Dispatch(&quot;ComLib.Lib&quot;)</FONT>
<BR><FONT SIZE=2>rec = win32com.client.Record('Params', myCom)</FONT>
<BR><FONT SIZE=2>rec.dA = 3.5 # works fine</FONT>
<BR><FONT SIZE=2>rec.dKs = (1.0, 2.0, 3.0 ,4.2, 5.5) # doesn?t work</FONT>
<BR><FONT SIZE=2>----</FONT>
<BR><FONT SIZE=2>Error Message:</FONT>
<BR><FONT SIZE=2>Traceback (most recent call last): </FONT>
<BR><FONT SIZE=2>File &quot;C:\Visual Studio 6.0\com.py&quot;, line 6, in ? </FONT>
<BR><FONT SIZE=2>myStruct.dKs = (1,2,3,4) </FONT>
<BR><FONT SIZE=2>pywintypes.com_error: (-2147024809, 'Falscher Parameter.', None, None)</FONT>
</P>

<P><FONT SIZE=2>After this I try to use an array:</FONT>
<BR><FONT SIZE=2>-----</FONT>
<BR><FONT SIZE=2>import array</FONT>
<BR><FONT SIZE=2>a = array.array('d', [1.4, 3.4])</FONT>
<BR><FONT SIZE=2>b = buffer(a)</FONT>
<BR><FONT SIZE=2>rec.dKs = b</FONT>
<BR><FONT SIZE=2># same error</FONT>
</P>

<P><FONT SIZE=2>In VBA I use the same struct, but their I ReDim the SafeArray:</FONT>
<BR><FONT SIZE=2>----</FONT>
<BR><FONT SIZE=2>Dim vp As Lib.Params</FONT>
<BR><FONT SIZE=2>ReDim vp.dKs(UBound(params, 1))</FONT>
<BR><FONT SIZE=2>Call Range2DblArray(params, vp.dKs)</FONT>
</P>

<P><FONT SIZE=2># my vba fill function</FONT>
<BR><FONT SIZE=2>Sub Range2DblArray(range As Variant, arr As Variant)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; 'ReDim myArray(UBound(range, 1))</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; Dim i As Integer</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; '..</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; For i = 1 To UBound(range, 1)</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr(i) = CDbl(range(i, 1))</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; Next i</FONT>
<BR><FONT SIZE=2>&nbsp;&nbsp;&nbsp; 'Range2Array = myArray</FONT>
<BR><FONT SIZE=2>End Sub</FONT>
</P>

<P><FONT SIZE=2>In VB the Code works fine.</FONT>
</P>

<P><FONT SIZE=2>Now, I'd like to know, if it is possible to create/resize the dKs tuple in</FONT>
<BR><FONT SIZE=2>the com_struct or if I have to implement a function in my DLL which adds</FONT>
<BR><FONT SIZE=2>elements to my struct in the DLL?</FONT>
</P>

<P><FONT SIZE=2>thank you in advance</FONT>
</P>

<P><FONT SIZE=2>Christian</FONT>
</P>
<BR>

<P><FONT SIZE=2>-- </FONT>
<BR><FONT SIZE=2>DSL Komplett von GMX +++ Supergunstig und stressfrei einsteigen!</FONT>
<BR><FONT SIZE=2>AKTION &quot;Kein Einrichtungspreis&quot; nutzen: <A HREF="http://www.gmx.net/de/go/dsl" TARGET="_blank">http://www.gmx.net/de/go/dsl</A></FONT>
</P>

<P><FONT SIZE=2>_______________________________________________</FONT>
<BR><FONT SIZE=2>python-au maillist&nbsp; -&nbsp; python-au@starship.python.net</FONT>
<BR><FONT SIZE=2><A HREF="http://starship.python.net/mailman/listinfo/python-au" TARGET="_blank">http://starship.python.net/mailman/listinfo/python-au</A></FONT>
</P>

</BODY>
<!--[object_id=#infocomp.com#]--><P><FONT face=Arial color=#808080 size=1>Important notice: This message is intended for the individual(s) and entity(s) addressed. The information contained in this transmission and any attached, may be confidential and may also be the subject of legal privilege, public interest immunity or legal professional privilege. Any review, retransmission, dissemination or other use of, taking of any action in reliance upon this information by person or entities other than the recipient is prohibited and requires authorization from the sender. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person) you may not copy or deliver this message to anyone. In such cases you should destroy this message and kindly notify the sender by reply email. </FONT></P>
<P><FONT face=Arial color=#808080 size=1>WARNING: Although Infocomp has taken reasonable precautions so that no viruses&nbsp;are present in this e-mail, the company cannot accept responsibility for any loss or damage arising from the use of e-mail attachments.</FONT></P></HTML>