初学者:
前些天接到任务是:要把一个银行卡读卡器读取出来的数据,转换格式,在截取银行卡卡号,再编写一个ActiveX控件,以便在Web网页中能得到刷卡的卡号。现在银行卡号能截取到,但是编写ActiveX控件编译的时候,总报错。错误如下:
实时错误,91:对象变量或with块未设置。(红色部分) --------现在贴出核心源码《高分跪求解答——————-Module代码如下;
Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case Msg
Case WM_NOEVENT
MsgBox "Error without event object", vbCritical
Case WM_OPENFAILURE
MessageBox 0, "Open USB Device Failure!!!", "Error", vbCritical
uclReadBankCard.cmdStartRead.Enabled = True
uclReadBankCard.cmdStopRead.Enabled = False
Call CloseHandle(g_hEvent)
Call CloseHandle(g_hProcess)
Case WM_READFAILURE
MessageBox 0, "Read USB Device Error!!!", "Error", vbCritical
uclReadBankCard.cmdStartRead.Enabled = True
uclReadBankCard.cmdStopRead.Enabled = False
Call CloseHandle(g_hEvent)
Call CloseHandle(g_hProcess)
Case WM_FINISHREAD
uclReadBankCard.cmdStartRead.Enabled = True
uclReadBankCard.cmdStopRead.Enabled = False
Call CloseHandle(g_hEvent)
Call CloseHandle(g_hProcess)
Case WM_COPYDATA
Dim CD As COPYDATASTRUCT
Dim dwByteLength As Long
Dim i As Integer
Dim strTemp As String
Dim strRead As String
Dim byteReceived() As Byte
Dim strMessage As String
Call CopyMemory(CD, ByVal lParam, Len(CD))
dwByteLength = CD.cbData
ReDim byteReceived(0 To dwByteLength - 1) As Byte
Call CopyMemory(byteReceived(0), ByVal CD.lpData, CD.cbData)
strRead = ""
strTemp = ""
For i = 0 To dwByteLength - 1
strTemp = Hex(byteReceived(i))
strTemp = Format(strTemp, "0")
strRead = strRead + strTemp + " "
Next i
strRead = strRead + vbCrLf
Dim str3B, str3F As Integer
str3B = InStr(strRead, "3B")
str3F = InStr(strRead, "3F")
strRead = Mid(strRead, str3B, str3F)
strRead = HexToStr(strRead)
MsgBox ("您的银行卡账号是:" + strRead)
'将截取出来的银行卡账号设置到uclReadBankCard控件中的txtBankCardNo中
With uclReadBankCard
uclReadBankCard.txtBankCardNo.Text = strRead
End With
Case Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End Select
End Function
对于这种module引用UserControl的控件,应该怎么做?
谢谢~~~~~
前些天接到任务是:要把一个银行卡读卡器读取出来的数据,转换格式,在截取银行卡卡号,再编写一个ActiveX控件,以便在Web网页中能得到刷卡的卡号。现在银行卡号能截取到,但是编写ActiveX控件编译的时候,总报错。错误如下:
实时错误,91:对象变量或with块未设置。(红色部分) --------现在贴出核心源码《高分跪求解答——————-Module代码如下;
Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case Msg
Case WM_NOEVENT
MsgBox "Error without event object", vbCritical
Case WM_OPENFAILURE
MessageBox 0, "Open USB Device Failure!!!", "Error", vbCritical
uclReadBankCard.cmdStartRead.Enabled = True
uclReadBankCard.cmdStopRead.Enabled = False
Call CloseHandle(g_hEvent)
Call CloseHandle(g_hProcess)
Case WM_READFAILURE
MessageBox 0, "Read USB Device Error!!!", "Error", vbCritical
uclReadBankCard.cmdStartRead.Enabled = True
uclReadBankCard.cmdStopRead.Enabled = False
Call CloseHandle(g_hEvent)
Call CloseHandle(g_hProcess)
Case WM_FINISHREAD
uclReadBankCard.cmdStartRead.Enabled = True
uclReadBankCard.cmdStopRead.Enabled = False
Call CloseHandle(g_hEvent)
Call CloseHandle(g_hProcess)
Case WM_COPYDATA
Dim CD As COPYDATASTRUCT
Dim dwByteLength As Long
Dim i As Integer
Dim strTemp As String
Dim strRead As String
Dim byteReceived() As Byte
Dim strMessage As String
Call CopyMemory(CD, ByVal lParam, Len(CD))
dwByteLength = CD.cbData
ReDim byteReceived(0 To dwByteLength - 1) As Byte
Call CopyMemory(byteReceived(0), ByVal CD.lpData, CD.cbData)
strRead = ""
strTemp = ""
For i = 0 To dwByteLength - 1
strTemp = Hex(byteReceived(i))
strTemp = Format(strTemp, "0")
strRead = strRead + strTemp + " "
Next i
strRead = strRead + vbCrLf
Dim str3B, str3F As Integer
str3B = InStr(strRead, "3B")
str3F = InStr(strRead, "3F")
strRead = Mid(strRead, str3B, str3F)
strRead = HexToStr(strRead)
MsgBox ("您的银行卡账号是:" + strRead)
'将截取出来的银行卡账号设置到uclReadBankCard控件中的txtBankCardNo中
With uclReadBankCard
uclReadBankCard.txtBankCardNo.Text = strRead
End With
Case Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End Select
End Function
对于这种module引用UserControl的控件,应该怎么做?
谢谢~~~~~
F8 跟踪一下可以发现问题所在。