[#41806] Win32OLE and MATLAB — Masaki Suketa <masaki.suketa@...>
助田です。
6 messages
2006/02/03
[#41812] "module private"な変数・メソッド — KURODA Hiraku <hiraku@...>
こんにちは、黒田です。
5 messages
2006/02/04
[#41825] RRSE 0.1 — OHBAYASHI Ippei <ohai@...>
こんにちは、大林です。
5 messages
2006/02/13
[#41854] rexml で doc.xml_decl.encoding = "shift-jis" は駄目ですか? — take_tk <ggb03124@...>
たけ(tk)です
5 messages
2006/02/24
[ruby-list:41810] Re: Win32OLE and MATLAB
From:
"H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date:
2006-02-03 09:24:43 UTC
List:
ruby-list #41810
山本です。
>> >どなたか、MATLABをWin32OLEから利用したことがある方はいらっしゃいますか?
>> >最近、Win32OLEからMATLABが動かないというメールを頂戴したのですが、
>> >MATLABを持ってないので、ちょっとだけ困ってます。
>>
>> MATLAB ではないのですが、最近 RubyForge に
>>
>> http://rubyforge.org/tracker/index.php?func=detail&aid=3237&group_id=426&atid=1698
>>
>> という報告がありました。もしかすると関係あるかもしれません。
>
>情報ありがとうございます。
>詳しく調べてみないとわかりませんが、一見したところ Member not found なので
>あまり関係ないような気がします。
>
> MS-Wordだったら、まだ調べる手立てはある
> 助田 雅紀
試しに、SAFEARRAY(double) [in, out] を引数に持つ、何もしないオートメーションを
作ってみたところ、同じエラーが出ました。
C++Builder で作ったバイナリを
http://www.ccsnet.ne.jp/~ocean/Project1.zip
においておきます。なお、SAFEARRAY(VARIANT) だとエラーになりませんでした。
require 'win32ole'
matlab = WIN32OLE.new('Project1.Win32OleBug')
matlab.GetFullMatrix([0.0])
追記:
http://homepage3.nifty.com/hippo2000/perltips/Win32/OLE/Variant.htm
に
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)