Mustafa Görmezer schrieb: > Hello, > > I am automating a CAD System which expects a so called > CATSafeArrayVariant. This is defined as one-dimensional arrays of > CATVariants. When I am right, this should work now with comtypes. But > how do I use it when a method expects it by reference ? > > In pure Python (where no "by reference" exists) I would simply use this > to get a list of file names: > > myrefs = Send.GetListOfDependantFiles() > > In VB (which works) it looks like: > > Dim arrayOfVariantOfBSTR() > ReDim arrayOfVariantOfBSTR(500) > Call Send.GetListOfDependantFiles(arrayOfVariantOfBSTR) > > After this I can find the results in the arrayOfVariantOfBSTR, which can > be used in a for each loop.
I looked into the generated file that you sent me offline. The GetListOfDependantFiles() method uses an [in, out] parameter, apparently a SAFEARRAY of BSTR (an array of strings). You must call the method with a list (or tuple) containing strings, comtypes will pack these automatically into a safearray, the com object will insert its results into the safearray, and comtypes will unpack it again and return a them as a sequence. So I assume that something like this *should* work: result = send.GetListOfDependantFiles([None] * 500) for item in result: print item Thomas ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ comtypes-users mailing list comtypes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/comtypes-users