掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETのAPIを使用するには? (ID:78920)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> VB.NETでAPIを使用しようとしたところ、 どんなコードを書いたのでしょうか? それがわからない事には、コードの修正案が出せないのですが…。(^^;) > ”構造体のインスタンスを初期化するには Initialize を呼び出す必要がある” > というタイトルでいろいろ説明が書いてあったのです。...が、 例えば、構造体のメンバで、配列を使う場合を考えてみてください。 VB.NETの構造体は、 Public Structure Test Dim aaa(2) As Short End Structure のように、初期サイズを与えて宣言する事はできませんし、 Public Structure Test Dim aaa() As Short = New Short() {1, 2, 3} End Structure のように、初期値を与えて宣言する事もできません。 そのため、どうしても、 Public Structure Test Dim aaa() As Short End Structure のような宣言にせざるを得ないのです。 しかしAPIに引き渡す場合には、配列サイズが 未定のままというわけにはいきません。 そのため、あらかじめ呼び出し前に、 Dim udtTest As Test ReDim udtTest.aaa(10) などとして、配列を初期化しておく必要があります。 (初期化後であれば、APIに渡すことができます) ———しかし、いちいち、構造体を使用する前に 各メンバを初期化するようなコードを書くのは面倒ですし、 メンバ数が多くなってくると、間違いの元になってしまいます。 そこで、構造体自身に初期化用のメソッドを追加しておくようにします。 Public Structure Test Dim aaa() As Short Public Sub Initialize() ReDim aaa(10) End Sub End Structure そして、呼び出し側では、 Dim udtTest As Test udtTest.Initialize() のようにして、初期化用メソッドを実行してから利用します。 こうすれば、正しく初期化を行う事ができるわけです。 (Initializeを呼び出すことを忘れない限りは…) 実際には、初期化用のメソッドの名前はInitializeでなくても 良いのですが、VB6からアップグレードしたコードでは、 このInitializeという名前が利用されるので、 それに習って、Sub Initialize() とする事が多いようです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.