初歩的な質問ですいません。
vb4.0からvb.netにプログラムを書き換えているのですが4.0で
Declare function a32 Lib "gp32.dll" Alias "aA" (Byval ud As_ Long,sstr As Any) As Long
Sub a(ByVal ud As Integer,Byval udname As string)
Call a32(ud, Byval udname)
end sub
のプログラムを
.netで
Declare function a32 Lib "gp32.dll" Alias "aA" (Byval ud As_ Long,sstr As String) As Long
Sub a(ByVal ud As Integer,Byval udname As string)
Call a32(ud, Byval udname)
end sub
と直してる途中なのですが、ByValのところで"式が必要です"というエラーがでます。解決法を自分なりに探したのですがわかりません。ご教授お願いします。
APIの記述に問題があります。
Public Declare Function a32 Lib "gp32.dll" Alias "aA" (ByVal ud As Integer, ByRef sstr As Object) As Integer
あと、第2引数のsstrはByrefではないでしょうか?
そうしたら、サブルーチンの'udname'もByrefになると思います。
Callに関しての記述も
Call a32(ud, udname)で・・・・・
申し訳ありません。書き間違えていました。
4.0で
Declare Function a32 Lib "gp32.dll" Alias "aA" (ByVal ud As Long, ByVal sstr As any) As Long
Public Sub a(ByVal ud As Integer, ByVal udname As string)
Call a32(ud, Byval udname )
end sub
でした。
.netで
Declare Function a32 Lib "Gpib-32.dll" Alias "aA" (ByVal ud As Long, ByVal sstr As Object) As Long
Public Sub a(ByVal ud As Integer, ByVal udname As String)
Call a32(ud, ByVal udname)
End Sub
とご指摘のようにobjectに変えてみたのですが、やはりByValのところでエラーが出てしまいます。
Call a32(ud, udname)
の様にByValを消すとエラーは解決されるのですが、実際にプログラムが動くかは、まだ他にもエラーがあるので確認出来ません。ByValを消しても動くものでしょうか?
あと、
LongをIntegerに直す。
APIの第2引数をByrefに変更
aのサブルーチンの第2引数もByrefに変更
とレスに書いてあります。
>実際にプログラムが動くかは、まだ他にもエラーがあるので確認出来ません。ByValを消しても動くものでしょうか?
'Call a32(ud, udname)'がVB.NETでのサブルーチンの受け渡しでの正しい記述です。
実際に動くかどうかは動かしてください。
ありがとうございます。しばらく、時間がかかりそうなので出来次第報告いたします。
ツイート | ![]() |