- - PR -
昔の VB で要素数 0 の配列を使いたい
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-27 13:00
Option Base を触らないのであれば問題ないと思います。 LBound と UBound 両方見ていればもっと問題なさ気ですが、 まあ、普通は触らないですからね > Option Base
このあたりは、先によねKENさんが紹介してくださった、 魔界の仮面弁士さんの記事に書かれているかと思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-12-28 16:21
僕は、variant で逃げちゃいます。
そんなに厳密に使う場合って、どんな場合があるんですか?
この書き方で、別に不便を感じたことはないのですが。 型指定を厳密にさせて、要素を自由にいぢりたいとなると、僕なら、各型ごとに collection をラッピングしたクラスを作ります。 で動的に配列を生成して渡せるようにしておけば、純粋に配列として扱う場合でも問題ないように思いますが。 | ||||||||||||
|
投稿日時: 2005-12-29 20:47
いろいろやっているのですが、来年になってしまいそうなので、とりあえず経過報告です。まあ、今、こんなことやってるんだ、程度に読んでいただければと思います。
SafeArrayAllocDescriptor に加えて RtlMoveMemory による操作が必要らしいのですが、このやり方がまだ良く分かっていません。 ちょっと方針を変えて、Preserve はあきらめて、ReDim の時は常にヘルパー(ラッパー)の Sub/Function を呼んで、その中で要素数が0でないときにだけ Preserve しようかと思っています。こうすれば UBound = -1 だったらどのみち要素数が 0 なんだから Preserve なしで ReDim できます。 あと、これはあまりたいしたことではないのですが、気づいたこととしては、VB だと配列に多次元もあるので、これをどうすれば良いのかで、これも悩んでいます。たとえば ReDim (9, -1) に相当することをしたい時はどうすれば良いかなど。多次元配列を使わないようにすればそれで良いんですが、たまたま自分が作ったプログラムでは使っていたので、どうしようかなと思って。
たしかにご指摘のとおり、これででき、私も、いままでこれを含めて種々のワザでもう10年近くもずっとしのいで来たのですが、これが面倒なのです。私のコードの書き方だと、配列の要素に種々の Class を Set することが多くて、ラッパーだらけになってしまうのです。配列の確保の時ならラッパーを使ってもさほど煩雑にはならないのですが、配列の読み書きのアクセスをするたびにラッパーを経由するのはさすがにしんどくて。 また、型が使えないと、インテリセンスが使えないとか、で、デバッグしにくいし。 |
«前のページへ
1|2|3