2017年11月12日日曜日

SafeArray でユーザー定義型を使いたい

SafeArray の要素をVBAのユーザー定義型にするにはどうしたらいいんだろうか
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms221482(v=vs.85).aspx

SAFEARRAY 構造体の fFeatures を FADF_RECORD にすればいいのか?

An array that contains records. When set, there will be a pointer to the IRecordInfo interface at negative offset 4 in the array descriptor.

とあるから IRecordInfo をセットするんだな、ユーザー定義型の情報なんだろう
でもこれどうやって調達すればいいんだろう
自前で作るとかはやりたくない

SafeArrayGetRecordInfo() でとれるかなと思ったんだけど失敗する
 dim arr()
 redim arr(1) as ユーザー定義型
の SafeArray 構造体がどうなってるか確認したら、arr の fFeatures には FADF_RECORD が格納されていない

ユーザー定義型を示すGUIDから取得できたりもするっぽい?
でもGUIDの取得方法わからない

んーーー
ユーザー定義型の配列を variant に突っ込もうとしたときに
「パブリックモジュールで定義されたなんとかかんとか」
みたいなエラーメッセージが表示されたりするのと関係があるんだろうか
そういうの以外は実はCOM的な意味でのユーザー定義型になっていなくて、
要素長だけかんりしてるとか
でもVBEでインテリセンスみたいなメンバ表示が出るあたり、
IRecordInfo とか持ってそうな感じするんだけどなぁ

0 件のコメント:

コメントを投稿

ニューラルネットやってみてる

最近ニューラルネットやってみてる 理屈を学ぼうと思って、まずはオブジェクト的に作ってみてる (ベクトル化とかは後回しで) sigmoid, tanh, ReLU MSE, cross entorpy あたりを小規模にいじってみてます でも今 soft max の逆伝...