• ベストアンサー
  • すぐに回答を!

VB6.0の参照渡し

  • 質問No.1324692
  • 閲覧数704
  • ありがとう数2
  • 回答数2

お礼率 78% (114/146)

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()の宣言方法、使用法等ご指導お願いします。

質問者が選んだベストアンサー

  • 回答No.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文の前に書かないと渡す前にエラーになります。
補足コメント
pokepotto

お礼率 78% (114/146)

VB側のコードについては、
以下の質問に乗せたもので、一応
うまく動いているようです。
同じような問題で悩んでいる方、参考になさって
ください。
質問タイトル:
4978 VC6.0で作成したDLLでVBからの配列を受け取る方法
URL→http://okweb.jp/kotaeru.php3?q=1326196
しかし、全体としてまだ
問題があるので、知識のある方のお力をお借りしたいです。
よろしくお願いします。
投稿日時:2005/04/12 10:20
お礼コメント
pokepotto

お礼率 78% (114/146)

ご回答どうもありがとうございました。
この部分についてのエラーはなんとか取り除くことが
できました。が・・・
渡ったつもりの配列がうまく渡っていないようで、
改めて、質問をしようと思っていますので、
そちらのほうでもお力をお貸し願えればと思っています。お時間があったらよろしくお願いします。
投稿日時:2005/04/12 09:57

その他の回答 (全1件)

  • 回答No.1
Declare Function fncTest Lib "Test.dll" (ByRef test As Long ) As Long

fncTest(Test(0))

こう・・・かな?
テストしてないので、一回試してみてください
お礼コメント
pokepotto

お礼率 78% (114/146)

ご回答どうもありがとうございました。
試行錯誤の末、なんとかこの部分のエラーは
回避できました。・・・が、渡ったつもりの
配列がうまく受け取れず・・・
改めて、質問をしようと思います。
よろしければ、またお力をお貸しいただきたいのですが、お時間があったらお願いします。
投稿日時:2005/04/12 09:55
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ