- ベストアンサー
VB6.0の参照渡し
VC++6.0で作成したDLLへVBの配列を渡そうと思っています。 いくつかためしたのですが、 「配列引数は ByRef でなければなりません。」 というエラーがでてしまいます。 標準モジュール内の記述 Declare Function fncTest Lib "Test.dll" (ByRef test() As Long) As Long フォーム内 Private Sub Test_Click() dim test() as Long dim i as integer for i = 0 to 3 test(i) = i next i fncTest(Test()) End Sub とりあえず、こんな形でかいてみましたが、 Sub内のtest()の宣言方法、使用法等ご指導お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
配列で渡そうとすればまず配列の大きさを決めてください Private Sub Test_Click() Dim Test(3) as Long ←配列の大きさを決める必要あり Dim i As Integer For i = 0 to 3 Test(i) = i Next i fncTest(Test) End Sub もしくは ReDim Test(3)を For文の前に書かないと渡す前にエラーになります。
その他の回答 (1)
Declare Function fncTest Lib "Test.dll" (ByRef test As Long ) As Long fncTest(Test(0)) こう・・・かな? テストしてないので、一回試してみてください
お礼
ご回答どうもありがとうございました。 試行錯誤の末、なんとかこの部分のエラーは 回避できました。・・・が、渡ったつもりの 配列がうまく受け取れず・・・ 改めて、質問をしようと思います。 よろしければ、またお力をお貸しいただきたいのですが、お時間があったらお願いします。
お礼
ご回答どうもありがとうございました。 この部分についてのエラーはなんとか取り除くことが できました。が・・・ 渡ったつもりの配列がうまく渡っていないようで、 改めて、質問をしようと思っていますので、 そちらのほうでもお力をお貸し願えればと思っています。お時間があったらよろしくお願いします。
補足
VB側のコードについては、 以下の質問に乗せたもので、一応 うまく動いているようです。 同じような問題で悩んでいる方、参考になさって ください。 質問タイトル: 4978 VC6.0で作成したDLLでVBからの配列を受け取る方法 URL→http://okweb.jp/kotaeru.php3?q=1326196 しかし、全体としてまだ 問題があるので、知識のある方のお力をお借りしたいです。 よろしくお願いします。