读书人

vb 调用DLL有关问题

发布时间: 2012-12-24 10:43:13 作者: rapoo

vb 调用DLL问题
dll内有以下函数:

int DecCard (int ComPort,int CardNumLength,unsigned char *CardNum,int DecMoney)

'入口参数:
' CardNumLength:显示卡号长度(字节数),最小可设置为10,最大可设置为17
' CardNum: 显示卡号(ASCII码),显示卡号长度等于CardNumLength
' DecMoney: 要扣除的金额

在vb中这样声明对吗?
Public Declare Function DecCard Lib "C:\WINDOWS\SYSTEM32\SmartCom411SFJ.dll" (ByVal ComPort As Long, ByVal CardNumLength As Long, ByRef CardNum As Byte, ByRef DecMoney As Long) As Long

Dim DecCardRuturn as Long
Dim CardNum() As Byte
DecMoney =Val(Text11.Text)
CardNum() = StrConv(Trim(Text3.Text) & vbNullChar, vbFromUnicode) ' 将字符串转换成字节数组
DecCardRuturn = SMT_DecCard(ComPort, CardNumLength, CardNum(0), DecMoney)



怎么老是操作不成功啊?请各位大虾指点指点!
[最优解释]
DecMoney =Clng(Text11.Text)

[其他解释]

Public Declare Function DecCard Lib "C:\WINDOWS\SYSTEM32\SmartCom411SFJ.dll" (ByVal ComPort As Long, ByVal CardNumLength As Long, ByRef CardNum As Byte, ByVal DecMoney As Long) As Long

Dim DecCardRuturn as Long
Dim CardNum() As Byte
DecMoney =Val(Text11.Text)
CardNum() = StrConv(Text3.Text & chr(0), vbFromUnicode) ' 将字符串转换成字节数组
DecCardRuturn = SMT_DecCard(ComPort, CardNumLength, CardNum(0), DecMoney)

[其他解释]
不好意思,再问一下楼主,我把DLL内函数中参数 &写掉了,应该是int DecCard (int ComPort,int CardNumLength,unsigned char *CardNum,int &DecMoney,是否应该把DecMoney 前面的 ByVal 改成 ByRef ?即
Public Declare Function DecCard Lib "C:\WINDOWS\SYSTEM32\SmartCom411SFJ.dll" (ByVal ComPort As Long, ByVal CardNumLength As Long, ByRef CardNum As Byte, ByRef DecMoney As Long) As Long

[其他解释]
引用:
不好意思,再问一下楼主,我把DLL内函数中参数 &写掉了,应该是int DecCard (int ComPort,int CardNumLength,unsigned char *CardNum,int &DecMoney,是否应该把DecMoney 前面的 ByVal 改成 ByRef ?即
Public Declare Function DecCard Lib "C:\WIN……

没错,是这样。
Public Declare Function DecCard Lib "C:\WINDOWS\SYSTEM32\SmartCom411SFJ.dll" (ByVal ComPort As Long, ByVal CardNumLength As Long, ByRef CardNum As Byte, ByRef DecMoney As Long) As Long

Dim DecCardRuturn as Long
Dim CardNum() As Byte
DecMoney =Clng(Text11.Text)
CardNum() = StrConv(Text3.Text & chr(0), vbFromUnicode) ' 将字符串转换成字节数组
DecCardRuturn = SMT_DecCard(ComPort, CardNumLength, CardNum(0), DecMoney)


[其他解释]
int DecCard (int ComPort,int CardNumLength,unsigned char *CardNum,int DecMoney)
'入口参数:
' CardNumLength:显示卡号长度(字节数),最小可设置为10,最大可设置为17
' CardNum: 显示卡号(ASCII码),显示卡号长度等于CardNumLength
' DecMoney: 要扣除的金额

Public Declare Function DecCard Lib "C:\WINDOWS\SYSTEM32\SmartCom411SFJ.dll" (ByVal ComPort As Long, ByVal CardNumLength As Long, Byval CardNum As string, Byval DecMoney As Long) As Long

读书人网 >VB

热点推荐