0

PropertyObjectカスタム オブジェクト ( と呼ばれる) を使用してデータを格納する C# DLL を作成しました。これを VB6 に渡し、問題なく使用できます。ただし、 type の配列を返す関数があり、この返された配列をmed 配列PropertyObjectに割り当てることはできません。Dim以下に示すように、コードはかなり単純です。

Dim PObject As New PCom
Dim PropObj() As PropertyObject

PropObj = PObject.GetPropertyObjects()

これを呼び出すたびに、 が得られRun-time error '13': Type mismatchます。PropertyObject()配列をGetPropertyObjects返すという事実にもかかわらず。何か足りないものはありますか、それともカスタム配列型をサポートするための拡張機能のようなクレイジーなものが必要ですか?

4

1 に答える 1

0

VB6 では、「ネイティブ配列」型システムと「COM オブジェクト」型システムは実際にはうまく連携しません。場合によっては、VB6 ランタイムに意図したとおりの動作をさせるために策略に頼らなければならないことがあります。

メソッドの戻り値を配列として再解釈する前に、中間バリアント変数に代入してみてください。

Dim PObject As New PCom
Dim PropVar As Variant
Dim PropObj() As PropertyObject

PropVar = PObject.GetPropertyObjects()
PropObj = PropVar

これで違いがなくても、少なくとも値の正確なデータ型をデバッグできます。:-)

また、()メソッド呼び出しの最後から を削除してみてください。VB6 がデータを解釈する方法に違いが生じる場合があります。

于 2013-05-14T14:50:15.823 に答える