[ruby-list:41811] Re: Win32OLE and MATLAB

From: Masaki Suketa <masaki.suketa@...>
Date: 2006-02-04 02:28:56 UTC
List: ruby-list #41811
助田です。

In message "[ruby-list:41810] Re: Win32OLE and MATLAB"
    on 06/02/03, "H.Yamamoto" <ocean@m2.ccsnet.ne.jp> writes:

> 試しに、SAFEARRAY(double) [in, out] を引数に持つ、何もしないオートメーションを
> 作ってみたところ、同じエラーが出ました。
> 
> C++Builder で作ったバイナリを
> 
> http://www.ccsnet.ne.jp/~ocean/Project1.zip

ありがとうございます。

>   SAFEARRAY variantを作るためには、配列要素の基本型に加えてVT_ARRAYフラグを指定しなければなりません
> 
> と書いてあるのを見て、試しにこうしてみたところ、エラーが出なくなりました。参考になれば。
> 
> Index: win32ole.c
> ===================================================================
> RCS file: /src/ruby/ext/win32ole/win32ole.c,v
> retrieving revision 1.43
> diff -u -w -b -p -r1.43 win32ole.c
> --- win32ole.c	12 Dec 2005 00:35:07 -0000	1.43
> +++ win32ole.c	3 Feb 2006 09:20:10 -0000
> @@ -813,7 +813,7 @@ ole_val2variant(val, var)
>          if(pid) free(pid);
>  
>          if (SUCCEEDED(hr)) {
> -            V_VT(var) = VT_VARIANT | VT_ARRAY;
> +            V_VT(var) = VT_R8 | VT_ARRAY;
>              V_ARRAY(var) = psa;
>          }
>          else if (psa != NULL)

ありがとうございます。十分、参考になります。
うーむ。ここが悪かったのか。もうちょっと考えてみます。

  助田 雅紀

In This Thread

Prev Next