Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Complicated output parameter in WIN32OLE (http://www.velocityreviews.com/forums/t862389-complicated-output-parameter-in-win32ole.html)

Mitchell Hashimoto 04-08-2010 01:05 AM

Complicated output parameter in WIN32OLE
 
Hello,

I have a somewhat "complicated" output parameter I need to get via
WIN32OLE and I'm having trouble getting it correct. The method signature
is as follows:

void GetDescription (out VirtualSystemDescriptionType[] aTypes, out
wstring[] aRefs, out wstring[] aOvfValues, out wstring[] aVBoxValues,
out wstring[] aExtraConfigValues)

I'm able to get basic string output parameters fine, but as soon as I
hit this method, I was stumped. How am I supposed to query this method
via the 'win32ole' library. My initial attempts were failures:

object.GetDescription(0, 0, 0, 0, 0) # Errors type mismatch
object.GetDescription([], [], [], [], []) # Errors type mismatch

I'm fairly certain I'll have to use object._invoke directly here but I'm
not sure what types to put into the types array. I have the win32ole.c
file open and I'm looking at the various types which are defined but I'm
not sure which to try.

Some guidance would be greatly appreciated. How would I call this
function?

Thank you,
Mitchell Hashimoto
--
Posted via http://www.ruby-forum.com/.


Chuck Remes 04-08-2010 01:51 AM

Re: Complicated output parameter in WIN32OLE
 
On Apr 7, 2010, at 8:05 PM, Mitchell Hashimoto wrote:

> Hello,
>
> I have a somewhat "complicated" output parameter I need to get via
> WIN32OLE and I'm having trouble getting it correct. The method signature
> is as follows:
>
> void GetDescription (out VirtualSystemDescriptionType[] aTypes, out
> wstring[] aRefs, out wstring[] aOvfValues, out wstring[] aVBoxValues,
> out wstring[] aExtraConfigValues)
>
> I'm able to get basic string output parameters fine, but as soon as I
> hit this method, I was stumped. How am I supposed to query this method
> via the 'win32ole' library. My initial attempts were failures:
>
> object.GetDescription(0, 0, 0, 0, 0) # Errors type mismatch
> object.GetDescription([], [], [], [], []) # Errors type mismatch
>
> I'm fairly certain I'll have to use object._invoke directly here but I'm
> not sure what types to put into the types array. I have the win32ole.c
> file open and I'm looking at the various types which are defined but I'm
> not sure which to try.


I'm not sure what to do here either. Have you tried retrieving the WIN32OLE_METHOD and then looping through each param and asking its #ole_type?

Check out WIN32OLE_PARAM.ole_type for the general idea.

cr




Mitchell Hashimoto 04-08-2010 04:33 AM

Re: Complicated output parameter in WIN32OLE
 
Chuck Remes wrote:
> I'm not sure what to do here either. Have you tried retrieving the
> WIN32OLE_METHOD and then looping through each param and asking its
> #ole_type?
>
> Check out WIN32OLE_PARAM.ole_type for the general idea.


Chuck,

Thanks for the response. I looped through each to print out the ole_type
and got the following:

VirtualSystemDescription,VirtualSystemDescription
BSTR,BSTR
BSTR,BSTR
BSTR,BSTR

I'm not sure why there are two for each? Besides that, do these types
mean something useful for the refs (for arrays)?

Mitchell

--
Posted via http://www.ruby-forum.com/.


Chuck Remes 04-08-2010 11:29 AM

Re: Complicated output parameter in WIN32OLE
 
On Apr 7, 2010, at 11:33 PM, Mitchell Hashimoto wrote:

> Chuck Remes wrote:
>> I'm not sure what to do here either. Have you tried retrieving the
>> WIN32OLE_METHOD and then looping through each param and asking its
>> #ole_type?
>>
>> Check out WIN32OLE_PARAM.ole_type for the general idea.

>
> Chuck,
>
> Thanks for the response. I looped through each to print out the ole_type
> and got the following:
>
> VirtualSystemDescription,VirtualSystemDescription
> BSTR,BSTR
> BSTR,BSTR
> BSTR,BSTR
>
> I'm not sure why there are two for each? Besides that, do these types
> mean something useful for the refs (for arrays)?


I don't really know how to deal with the VirtualSystemDescription but at least we know the BSTR maps to VT_BSTR in WIN32OLE::VARIANT. That's a good start.

So for BSTR use WIN32OLE::VARIANT::BSTR and for VirtualSystemDescription try WIN32OLE::VARIANT::VT_VARIANT. See what happens when you invoke the method with that argument list.

cr




All times are GMT. The time now is 04:36 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.