[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: WIN32OLE extension using in/out SAFEARRAYs (Matlab interface

Berger, Daniel

2/2/2006 4:49:00 PM

> -----Original Message-----
> From: Ryan Hinton [mailto:iobass@email.com]
> Sent: Wednesday, February 01, 2006 2:49 PM
> To: ruby-talk ML
> Subject: WIN32OLE extension using in/out SAFEARRAYs (Matlab interface)
>
>
> I am having trouble calling a COM object (Matlab) using the
> excellent WIN32OLE Ruby extension. Several other calls have
> worked fine, but this call involves some in/out SAFEARRAYs.
> Here is the method signature.
>
> GetFullMatrix([in] BSTR varname, [in] BSTR workspace,
> [in, out] SAFEARRAY(double) *pr,
> [in, out] SAFEARRAY(double) *pi)
>
> The server uses the sizes of the arrays pr and pi to fill
> them with the requested data--hence their dual in/out nature.
> Does anyone know how to properly make a call like this? Is
> it possible? My most successful attempts have given me the
> following error.
>
> WIN32OLERuntimeError: GetFullMatrix
> OLE error code:0 in <Unknown>
> <No Description>
> HRESULT error code:0x80020005
> Type mismatch.
> from (irb):30:in `method_missing'
> from (irb):30
> from :0
>
> In case you're running on Windows with Matlab installed, here
> is the code I am using.
>
> require 'win32ole'
> matlab = WIN32OLE.new('Matlab.Application')
> matlab.Execute('bob = 1:5;')
> t1 = Array.new(5, 0.0)
> t2 = t1.dup
> t3 = matlab.GetFullMatrix('bob', 'base', t1, t2)

I can't answer your question directly, but a search on "getfullmatrix" +
"perl" revealed some Matlab examples that you might be able to borrow
from.

Regards,

Dan