以前、魔界の仮面弁士さんが書き込みをされていた
ことを構造体配列でやりたいと思いました。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200308/03080063.txt
できるはず!と思っているのですが
なかなかうまくいきません。
よろしくお願いします。
> できるはず!と思っているのですが
空の配列をあらかじめ用意しておく方法ですよね?
リンク先にあるデータ型だけです。ユーザ定義型ではできません。
最終手段としてはエラートラップしかないよねぇ…こういうのって。
要素数を保存しておく変数も定義しておくとかいう手もあるけれど…
これも配列の引数だと全部見直さなくちゃいけないし。
(LongやInteger等の)標準的な型に関しては、空の配列を作成する事が可能ですが、
ユーザー定義型の空配列を作成する方法については、私にはわかりません。
ただし、空配列を作成するのではなく、「その配列がReDim済みかどうかを確認」するだけなら、
RtlMoveMemory APIを使うことで判定できます。
なるほど。
無理なようですね…
今はエラートラップしています。
それで我慢します。
でも、できないことが分かっただけでも
十分価値がありました。
ありがとうございます。
> ユーザー定義型の空配列を作成する方法については、私にはわかりません。
ユーザー定義型でもできるようです。(教えてくれたK.J.K.さん、感謝!)
Private Declare Function SafeArrayAllocDescriptor Lib "oleaut32" _
(ByVal cDims As Long, _
ByRef ppsaOut() As Any) As Long
と宣言して、
Dim X() As Test
SafeArrayAllocDescriptor 1, X
を実行してみてください。UBound(X) が -1 になります。
ツイート | ![]() |