著作一覧 |
昨日うまく動かないとWin32OLEの処理じゃないかと疑っていた問題は、こちらの設定ミスだった。
そういえば、VT_ARRAYってやたら上位にビットが立っているとか思いだしたが、たとえばSAFEARRAY(byte)であれば、VT_ARRAY | VT_UI1 となるのでした。Win32OLEはその情報を、引数のVARIANTARGから取っているのに、そこを単にVT_ARRAYと設定していたために、SafeArrayPtrOfIndexがデータ型変換できずにnilになっていたということのようだ。
ではなぜVBがそれっぽい値を出せるのかというと、おそらく見ているところが違って、安全配列のヘッダのcbElementsか、あるいはTypeLibに指定したデータ型を見ているのだと思う。
というわけで修正して、無事(タイミングを除けば)Win32OLEからも利用できるようになった。
で、次は加速度センサーを接続してみるというように話は進むのであった。
ジェズイットを見習え |
なるほど。そういうことでしたか。