構造体の要素数を取得するには?


mutu  2008-11-20 00:28:41  No: 101319

たびたび、すみません。
VB6.0、winXPで開発しています。

http://okwave.jp/qa3323340.html
上記サイトを参考にして、
CSVの内容を構造体に格納したのですが、
構造体の要素数の取得方法がわからないため、
ループで回せずに困っています。

どのようにすれば、構造体の要素数を取得してループで回せるのでしょうか?


魔界の仮面弁士  2008-11-20 01:00:04  No: 101320

> 上記サイトを参考にして、
これは VB6 ではなく、VBA のようですね。

> CSVの内容を構造体に格納したのですが、
最終的に、どのようにしたのか読み取れませんでしたが、
回答番号:No.2 のように、(Get ではなく)Line Input # で
行単位で読み取り、それを Split するイメージでしょうか。

> 構造体の要素数の取得方法がわからないため、
ユーザー定義型の要素一覧を取得する事はできません。
(なので、ループで処理する事もできません)

ActiveX にして、“ユーザー定義型”をパブリックな型として登録するか、
タイプライブラリで“構造体”を定義してやれば、TLBINF32 等を用いて、
メンバ情報を拾えるとは思いますが……けっこう面倒かと。

> ループで回せずに困っています。
もしも Split しているのであれば、その時点で結果は配列になりますよね。
それをユーザー定義型で管理したいなら、そのメンバも配列にしておけば、
ループで処理できるかと思います。

ということで、修正方針としてはこうなるかな。

(1) ユーザー定義型に格納しなおす必要があるのかどうか、再検討する。
(2) どうしてもユーザー定義型が必要なら、メンバを配列にして、ループで回しやすいようにする。
(3) ユーザー定義型の定義を変更できないのであれば、ループで処理するのは諦める。


mutu  2008-11-21 03:18:44  No: 101321

ユーザ定義の要素数って取れないんですね、残念です。

暫定的に、
CSVファイルを読み込んだ時のカウンターをPublic変数として保持して、
そのカウンターの数だけループで回すようにしてみました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加