各位大大, 小子是 delphi 新手, 请各位帮我把以下代码换成DELPHI中代码班:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function ConvHexToDec Lib "CONVERTHEXDEC.DLL" (ByVal strMfgNo$, ByVal strMfgNoOut$) As IntegerPrivate ReaderCommPort As Integer
Private Output() As Byte
Private ChkSum As Integer
Private ls_MfgStr As String
Private li_ReturnVal As Integer
Private CardNo As String
Private TimeOut As Boolean
Private BlockNo As Integer
Private KeyStr As String
Private CardType As String
Private gs_Info As String
Private ExistingBalance As Double, NewBalance As Double, TopUpValue As DoublePrivate Sub cmdClose_Click()
End
End SubPrivate Sub cmdReadCard_Click()
On Error GoTo err
CardNo = ""
txtCardNo.Text = ""
txtExtBal.Text = ""
txtTopUp.Text = ""
txtNewBal.Text = ""
ChkSum = 2 Xor 1 Xor Val("&H" & "ED") Xor 0
ReDim Output(5) As Byte
Output(0) = 2 'Header
Output(1) = 1 'ID
Output(2) = Val("&H" & "ED") 'Command
Output(3) = 0 'Data Length
Output(4) = ChkSum
Output(5) = 3 If funReadWriteCard(18) = 0 Then
BlockNo = 9
ChkSum = 2 Xor 1 Xor Val("&H" & "EC") Xor 8 Xor Trim(Val("&H" & BlockNo)) Xor _
0 Xor Val("&H" & Mid(KeyStr, 1, 2)) Xor Val("&H" & Mid(KeyStr, 3, 2)) Xor _
Val("&H" & Mid(KeyStr, 5, 2)) Xor Val("&H" & Mid(KeyStr, 7, 2)) Xor _
Val("&H" & Mid(KeyStr, 9, 2)) Xor Val("&H" & Mid(KeyStr, 11, 2))
ReDim Output(13) As Byte
Output(0) = 2 'header
Output(1) = 1 'id
Output(2) = Val("&H" & "EC")
Output(3) = 8 'length
Output(4) = Trim(Val("&H" & BlockNo)) '8
Output(5) = 0
Output(6) = Val("&H" & Mid(KeyStr, 1, 2))
Output(7) = Val("&H" & Mid(KeyStr, 3, 2))
Output(8) = Val("&H" & Mid(KeyStr, 5, 2))
Output(9) = Val("&H" & Mid(KeyStr, 7, 2))
Output(10) = Val("&H" & Mid(KeyStr, 9, 2))
Output(11) = Val("&H" & Mid(KeyStr, 11, 2))
Output(12) = ChkSum
Output(13) = 3
If funReadWriteCard(19) = 0 Then
If CardType = "E" Then
BlockNo = 8
ChkSum = 2 Xor 1 Xor Val("&H" & "EC") Xor 8 Xor Trim(Val("&H" & BlockNo)) Xor _
0 Xor Val("&H" & Mid(KeyStr, 1, 2)) Xor Val("&H" & Mid(KeyStr, 3, 2)) Xor _
Val("&H" & Mid(KeyStr, 5, 2)) Xor Val("&H" & Mid(KeyStr, 7, 2)) Xor _
Val("&H" & Mid(KeyStr, 9, 2)) Xor Val("&H" & Mid(KeyStr, 11, 2))
ReDim Output(13) As Byte
Output(0) = 2 'header
Output(1) = 1 'id
Output(2) = Val("&H" & "EC")
Output(3) = 8 'length
Output(4) = Trim(Val("&H" & BlockNo)) '8
Output(5) = 0
Output(6) = Val("&H" & Mid(KeyStr, 1, 2))
Output(7) = Val("&H" & Mid(KeyStr, 3, 2))
Output(8) = Val("&H" & Mid(KeyStr, 5, 2))
Output(9) = Val("&H" & Mid(KeyStr, 7, 2))
Output(10) = Val("&H" & Mid(KeyStr, 9, 2))
Output(11) = Val("&H" & Mid(KeyStr, 11, 2))
Output(12) = ChkSum
Output(13) = 3
If funReadWriteCard(19) = 0 Then
txtExtBal.Text = Format(ExistingBalance, "####0.00")
End If
Else
MsgBox "Sorry, this is not an epurse card!", vbCritical + vbOKOnly, "Epurse"
txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
Else
MsgBox "Sorry, invalid card!", vbCritical + vbOKOnly, "Epurse"
txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
Else
MsgBox "Cannot Read Card!", vbCritical + vbOKOnly, "Epurse"
txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
Exit Sub
err:
MsgBox "Event : cmdReadCard_Click" & vbCrLf & "[" & err.Number & "]" & " : " & err.Description
End SubPrivate Sub cmdWriteCard_Click()
Dim TempData As String, DataWrite As String, HexStr As String
Dim i As Integer
NewBalance = ExistingBalance + txtTopUp.Text
txtNewBal.Text = Format(NewBalance, "####0.00")
TempData = g_pb_FunFmValToStr(NewBalance * 100, 4, True)
For i = 1 To 4
HexStr = Hex(Asc(Mid(TempData, i, 1)))
If Len(HexStr) = 2 Then
HexStr = HexStr
Else
HexStr = "0" & HexStr
End If
DataWrite = DataWrite & HexStr
Next
Debug.Print DataWrite
BlockNo = 8
ChkSum = 2 Xor 1 Xor Val("&H" & "EB") Xor 24 Xor Val("&H" & BlockNo) Xor _
0 Xor Val("&H" & Mid(KeyStr, 1, 2)) Xor Val("&H" & Mid(KeyStr, 3, 2)) Xor _
Val("&H" & Mid(KeyStr, 5, 2)) Xor Val("&H" & Mid(KeyStr, 7, 2)) Xor _
Val("&H" & Mid(KeyStr, 9, 2)) Xor Val("&H" & Mid(KeyStr, 11, 2)) Xor _
Val("&H" & Mid(DataWrite, 1, 2)) Xor Val("&H" & Mid(DataWrite, 3, 2)) Xor _
Val("&H" & Mid(DataWrite, 5, 2)) Xor Val("&H" & Mid(DataWrite, 7, 2)) Xor _
Val("&H" & Mid(gs_Info, 1, 2)) Xor Val("&H" & Mid(gs_Info, 3, 2)) Xor _
Val("&H" & Mid(gs_Info, 5, 2)) Xor Val("&H" & Mid(gs_Info, 7, 2)) Xor _
Val("&H" & Mid(gs_Info, 9, 2)) Xor Val("&H" & Mid(gs_Info, 11, 2)) Xor _
Val("&H" & Mid(gs_Info, 13, 2)) Xor Val("&H" & Mid(gs_Info, 15, 2)) Xor _
Val("&H" & Mid(gs_Info, 17, 2)) Xor Val("&H" & Mid(gs_Info, 19, 2)) Xor _
Val("&H" & Mid(gs_Info, 21, 2)) Xor Val("&H" & Mid(gs_Info, 23, 2)) ReDim Output(29) As Byte Output(0) = 2
Output(1) = 1
Output(2) = Val("&H" & "EB")
Output(3) = 24 Output(4) = Val("&H" & BlockNo)
Output(5) = 0
Output(6) = Val("&H" & Mid(KeyStr, 1, 2))
Output(7) = Val("&H" & Mid(KeyStr, 3, 2))
Output(8) = Val("&H" & Mid(KeyStr, 5, 2))
Output(9) = Val("&H" & Mid(KeyStr, 7, 2))
Output(10) = Val("&H" & Mid(KeyStr, 9, 2))
Output(11) = Val("&H" & Mid(KeyStr, 11, 2)) Output(12) = Val("&H" & Mid(DataWrite, 1, 2))
Output(13) = Val("&H" & Mid(DataWrite, 3, 2))
Output(14) = Val("&H" & Mid(DataWrite, 5, 2))
Output(15) = Val("&H" & Mid(DataWrite, 7, 2)) Output(16) = Val("&H" & Mid(gs_Info, 1, 2))
Output(17) = Val("&H" & Mid(gs_Info, 3, 2))
Output(18) = Val("&H" & Mid(gs_Info, 5, 2))
Output(19) = Val("&H" & Mid(gs_Info, 7, 2))
Output(20) = Val("&H" & Mid(gs_Info, 9, 2))
Output(21) = Val("&H" & Mid(gs_Info, 11, 2))
Output(22) = Val("&H" & Mid(gs_Info, 13, 2))
Output(23) = Val("&H" & Mid(gs_Info, 15, 2))
Output(24) = Val("&H" & Mid(gs_Info, 17, 2))
Output(25) = Val("&H" & Mid(gs_Info, 19, 2))
Output(26) = Val("&H" & Mid(gs_Info, 21, 2))
Output(27) = Val("&H" & Mid(gs_Info, 23, 2)) Output(28) = ChkSum
Output(29) = 3 If funReadWriteCard(20) = 0 Then
MsgBox "Success !", vbInformation + vbOKOnly, "Epurse"
Else
MsgBox "Write Card Failed !" & vbCrLf & "Please Try Again.", vbCritical + vbOKOnly, "Epurse"
' txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
End SubPrivate Sub Form_Load()
KeyStr = "FFFFFFFFFFFF"
ReaderCommPort = 4
End Sub
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function ConvHexToDec Lib "CONVERTHEXDEC.DLL" (ByVal strMfgNo$, ByVal strMfgNoOut$) As IntegerPrivate ReaderCommPort As Integer
Private Output() As Byte
Private ChkSum As Integer
Private ls_MfgStr As String
Private li_ReturnVal As Integer
Private CardNo As String
Private TimeOut As Boolean
Private BlockNo As Integer
Private KeyStr As String
Private CardType As String
Private gs_Info As String
Private ExistingBalance As Double, NewBalance As Double, TopUpValue As DoublePrivate Sub cmdClose_Click()
End
End SubPrivate Sub cmdReadCard_Click()
On Error GoTo err
CardNo = ""
txtCardNo.Text = ""
txtExtBal.Text = ""
txtTopUp.Text = ""
txtNewBal.Text = ""
ChkSum = 2 Xor 1 Xor Val("&H" & "ED") Xor 0
ReDim Output(5) As Byte
Output(0) = 2 'Header
Output(1) = 1 'ID
Output(2) = Val("&H" & "ED") 'Command
Output(3) = 0 'Data Length
Output(4) = ChkSum
Output(5) = 3 If funReadWriteCard(18) = 0 Then
BlockNo = 9
ChkSum = 2 Xor 1 Xor Val("&H" & "EC") Xor 8 Xor Trim(Val("&H" & BlockNo)) Xor _
0 Xor Val("&H" & Mid(KeyStr, 1, 2)) Xor Val("&H" & Mid(KeyStr, 3, 2)) Xor _
Val("&H" & Mid(KeyStr, 5, 2)) Xor Val("&H" & Mid(KeyStr, 7, 2)) Xor _
Val("&H" & Mid(KeyStr, 9, 2)) Xor Val("&H" & Mid(KeyStr, 11, 2))
ReDim Output(13) As Byte
Output(0) = 2 'header
Output(1) = 1 'id
Output(2) = Val("&H" & "EC")
Output(3) = 8 'length
Output(4) = Trim(Val("&H" & BlockNo)) '8
Output(5) = 0
Output(6) = Val("&H" & Mid(KeyStr, 1, 2))
Output(7) = Val("&H" & Mid(KeyStr, 3, 2))
Output(8) = Val("&H" & Mid(KeyStr, 5, 2))
Output(9) = Val("&H" & Mid(KeyStr, 7, 2))
Output(10) = Val("&H" & Mid(KeyStr, 9, 2))
Output(11) = Val("&H" & Mid(KeyStr, 11, 2))
Output(12) = ChkSum
Output(13) = 3
If funReadWriteCard(19) = 0 Then
If CardType = "E" Then
BlockNo = 8
ChkSum = 2 Xor 1 Xor Val("&H" & "EC") Xor 8 Xor Trim(Val("&H" & BlockNo)) Xor _
0 Xor Val("&H" & Mid(KeyStr, 1, 2)) Xor Val("&H" & Mid(KeyStr, 3, 2)) Xor _
Val("&H" & Mid(KeyStr, 5, 2)) Xor Val("&H" & Mid(KeyStr, 7, 2)) Xor _
Val("&H" & Mid(KeyStr, 9, 2)) Xor Val("&H" & Mid(KeyStr, 11, 2))
ReDim Output(13) As Byte
Output(0) = 2 'header
Output(1) = 1 'id
Output(2) = Val("&H" & "EC")
Output(3) = 8 'length
Output(4) = Trim(Val("&H" & BlockNo)) '8
Output(5) = 0
Output(6) = Val("&H" & Mid(KeyStr, 1, 2))
Output(7) = Val("&H" & Mid(KeyStr, 3, 2))
Output(8) = Val("&H" & Mid(KeyStr, 5, 2))
Output(9) = Val("&H" & Mid(KeyStr, 7, 2))
Output(10) = Val("&H" & Mid(KeyStr, 9, 2))
Output(11) = Val("&H" & Mid(KeyStr, 11, 2))
Output(12) = ChkSum
Output(13) = 3
If funReadWriteCard(19) = 0 Then
txtExtBal.Text = Format(ExistingBalance, "####0.00")
End If
Else
MsgBox "Sorry, this is not an epurse card!", vbCritical + vbOKOnly, "Epurse"
txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
Else
MsgBox "Sorry, invalid card!", vbCritical + vbOKOnly, "Epurse"
txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
Else
MsgBox "Cannot Read Card!", vbCritical + vbOKOnly, "Epurse"
txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
Exit Sub
err:
MsgBox "Event : cmdReadCard_Click" & vbCrLf & "[" & err.Number & "]" & " : " & err.Description
End SubPrivate Sub cmdWriteCard_Click()
Dim TempData As String, DataWrite As String, HexStr As String
Dim i As Integer
NewBalance = ExistingBalance + txtTopUp.Text
txtNewBal.Text = Format(NewBalance, "####0.00")
TempData = g_pb_FunFmValToStr(NewBalance * 100, 4, True)
For i = 1 To 4
HexStr = Hex(Asc(Mid(TempData, i, 1)))
If Len(HexStr) = 2 Then
HexStr = HexStr
Else
HexStr = "0" & HexStr
End If
DataWrite = DataWrite & HexStr
Next
Debug.Print DataWrite
BlockNo = 8
ChkSum = 2 Xor 1 Xor Val("&H" & "EB") Xor 24 Xor Val("&H" & BlockNo) Xor _
0 Xor Val("&H" & Mid(KeyStr, 1, 2)) Xor Val("&H" & Mid(KeyStr, 3, 2)) Xor _
Val("&H" & Mid(KeyStr, 5, 2)) Xor Val("&H" & Mid(KeyStr, 7, 2)) Xor _
Val("&H" & Mid(KeyStr, 9, 2)) Xor Val("&H" & Mid(KeyStr, 11, 2)) Xor _
Val("&H" & Mid(DataWrite, 1, 2)) Xor Val("&H" & Mid(DataWrite, 3, 2)) Xor _
Val("&H" & Mid(DataWrite, 5, 2)) Xor Val("&H" & Mid(DataWrite, 7, 2)) Xor _
Val("&H" & Mid(gs_Info, 1, 2)) Xor Val("&H" & Mid(gs_Info, 3, 2)) Xor _
Val("&H" & Mid(gs_Info, 5, 2)) Xor Val("&H" & Mid(gs_Info, 7, 2)) Xor _
Val("&H" & Mid(gs_Info, 9, 2)) Xor Val("&H" & Mid(gs_Info, 11, 2)) Xor _
Val("&H" & Mid(gs_Info, 13, 2)) Xor Val("&H" & Mid(gs_Info, 15, 2)) Xor _
Val("&H" & Mid(gs_Info, 17, 2)) Xor Val("&H" & Mid(gs_Info, 19, 2)) Xor _
Val("&H" & Mid(gs_Info, 21, 2)) Xor Val("&H" & Mid(gs_Info, 23, 2)) ReDim Output(29) As Byte Output(0) = 2
Output(1) = 1
Output(2) = Val("&H" & "EB")
Output(3) = 24 Output(4) = Val("&H" & BlockNo)
Output(5) = 0
Output(6) = Val("&H" & Mid(KeyStr, 1, 2))
Output(7) = Val("&H" & Mid(KeyStr, 3, 2))
Output(8) = Val("&H" & Mid(KeyStr, 5, 2))
Output(9) = Val("&H" & Mid(KeyStr, 7, 2))
Output(10) = Val("&H" & Mid(KeyStr, 9, 2))
Output(11) = Val("&H" & Mid(KeyStr, 11, 2)) Output(12) = Val("&H" & Mid(DataWrite, 1, 2))
Output(13) = Val("&H" & Mid(DataWrite, 3, 2))
Output(14) = Val("&H" & Mid(DataWrite, 5, 2))
Output(15) = Val("&H" & Mid(DataWrite, 7, 2)) Output(16) = Val("&H" & Mid(gs_Info, 1, 2))
Output(17) = Val("&H" & Mid(gs_Info, 3, 2))
Output(18) = Val("&H" & Mid(gs_Info, 5, 2))
Output(19) = Val("&H" & Mid(gs_Info, 7, 2))
Output(20) = Val("&H" & Mid(gs_Info, 9, 2))
Output(21) = Val("&H" & Mid(gs_Info, 11, 2))
Output(22) = Val("&H" & Mid(gs_Info, 13, 2))
Output(23) = Val("&H" & Mid(gs_Info, 15, 2))
Output(24) = Val("&H" & Mid(gs_Info, 17, 2))
Output(25) = Val("&H" & Mid(gs_Info, 19, 2))
Output(26) = Val("&H" & Mid(gs_Info, 21, 2))
Output(27) = Val("&H" & Mid(gs_Info, 23, 2)) Output(28) = ChkSum
Output(29) = 3 If funReadWriteCard(20) = 0 Then
MsgBox "Success !", vbInformation + vbOKOnly, "Epurse"
Else
MsgBox "Write Card Failed !" & vbCrLf & "Please Try Again.", vbCritical + vbOKOnly, "Epurse"
' txtCardNo.Text = ""
CommReader.PortOpen = False
Exit Sub
End If
End SubPrivate Sub Form_Load()
KeyStr = "FFFFFFFFFFFF"
ReaderCommPort = 4
End Sub
解决方案 »
- 请问delphi 如何copy后面几个字符
- (急)判断Access数据库中是否记录重复
- 600分求解!!delphi7开发ISAPI网络服务器端程序时的UTF8问题, 内附源码
- 一个经验交流的地方
- 100分求计算器源代码!
- dbgrid问题
- 超难问题!如何在一个程序中得到另一个程序中的datagrid的数据!
- 我的软件如果要在各种Windows平台下测试,除了安装多个Windows系统外有无其他办法?
- Delphi 如何实现图标的叠加?
- 怎样实现如网页中光标指向超链接时,光标变成手的形状?不是Cursor=crHandPoint;那手不是。怎样实现????
- richview中文换行乱码问题怎样解决?
- 如何为程序加入更换图标功能?
TimeOut = True
tmrTimeOut.Enabled = False
End SubPublic Function funReadWriteCard(ByRef Command As Byte) As Long
On Error GoTo err
Dim tempInputReader As String
Dim InputReader As String
Dim z As Integer
Dim i As Integer
Dim FinishInput As Integer
Dim out(0) As Byte If CommReader.PortOpen = False Then
CommReader.Settings = "57600,N,8,1"
CommReader.CommPort = ReaderCommPort
CommReader.PortOpen = True
End If CommReader.InputLen = 1
CommReader.InBufferCount = 0
CommReader.OutBufferCount = 0 For i = LBound(Output) To UBound(Output)
out(0) = Output(i)
CommReader.Output = out
Next
TimeOut = False
tmrTimeOut.Enabled = True
Sleep (10)
Do
DoEvents Loop Until TimeOut = True Or CommReader.InBufferCount <> 0
tmrTimeOut.Enabled = False
If TimeOut = False Then
Do
DoEvents
tempInputReader = CommReader.Input(0)
Sleep (10)
If tempInputReader <> "" Then
If InputReader = "" Then
InputReader = tempInputReader
z = z + 1
Else
InputReader = InputReader & ";" & tempInputReader
z = z + 1
End If
Select Case Command
Case 18
'read card no
If z = 10 Then
FinishInput = funBCCCompare(InputReader, Command, 10)
ElseIf z = 6 Then
FinishInput = funBCCCompare(InputReader, Command, 6)
End If
Case 19
'read block data
If z = 26 Then '22 Then
FinishInput = funBCCCompare(InputReader, Command, 22)
ElseIf z = 6 Then
FinishInput = funBCCCompare(InputReader, Command, 6)
End If
Case 20
'write card
If z = 6 Then
FinishInput = funBCCCompare(InputReader, Command, 0)
End If
End Select
End If
Loop Until TimeOut = True Or FinishInput = 99 Or FinishInput = 1
If FinishInput = 99 Then
funReadWriteCard = 1
End If
ElseIf TimeOut = True Then
funReadWriteCard = 1 'timeOut
End If Exit Function
err:
funReadWriteCard = 1
MsgBox err.Description
End Function
On Error GoTo err
Dim tempSplit
Dim TempData As String
Dim tempChkSum As String
Dim i As Integer
Dim TExistingBalance As String
Dim HexStr As String Select Case Command
Case 18
'read card no
If Length = 10 Then
'Debug.Print BCC
tempSplit = Split(BCC, ";")
tempChkSum = tempSplit(0) Xor tempSplit(1) Xor tempSplit(2) Xor _
tempSplit(3) Xor tempSplit(4) Xor tempSplit(5) Xor _
tempSplit(6) Xor tempSplit(7)
If tempSplit(9) <> 3 Then
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(8) <> tempChkSum Then
funBCCCompare = 99
txtCardNo.Text = ""
Exit Function
Else
TempData = ""
For i = 7 To 4 Step -1
If Len(Hex(tempSplit(i))) = 1 Then
TempData = TempData & "0" & Hex(tempSplit(i))
Else
TempData = TempData & Hex(tempSplit(i))
End If
Next i
ls_MfgStr = Space(50)
li_ReturnVal = ConvHexToDec(TempData, ls_MfgStr)
CardNo = Format(Mid(ls_MfgStr, 1, 10), "0000000000")
Debug.Print CardNo
txtCardNo.Text = CardNo
funBCCCompare = 1
End If
ElseIf Length = 6 Then
tempSplit = Split(BCC, ";")
If tempSplit(5) = 3 And tempSplit(2) = 255 Then
funBCCCompare = 99
txtCardNo.Text = ""
Exit Function
End If
End If
Case 19
'read block data
If Length = 22 Then
tempSplit = Split(BCC, ";")
Debug.Print BCC
tempChkSum = tempSplit(0) Xor tempSplit(1) Xor tempSplit(2) Xor _
tempSplit(3) Xor tempSplit(4) Xor tempSplit(5) Xor _
tempSplit(6) Xor tempSplit(7) Xor tempSplit(8) Xor _
tempSplit(9) Xor tempSplit(10) Xor tempSplit(11) Xor _
tempSplit(12) Xor tempSplit(13) Xor tempSplit(14) Xor _
tempSplit(15) Xor tempSplit(16) Xor tempSplit(17) Xor _
tempSplit(18) Xor tempSplit(19) Xor tempSplit(20) Xor _
tempSplit(21) Xor tempSplit(22) Xor tempSplit(23)
If tempSplit(25) <> 3 Then
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(0) <> Output(0) Then
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(1) <> Output(1) Then
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(24) <> tempChkSum Then
funBCCCompare = 99
' txtData.Text = ""
Exit Function
Else
If BlockNo = 8 Then
TempData = ""
' For i = 4 To 7 '19
' If Len(Hex(tempSplit(i))) = 1 Then
' HexStr = "0" & Hex(tempSplit(i))
' Else
' HexStr = Hex(tempSplit(i))
' End If
' TempData = TempData & Chr(Val("&H" + HexStr))
' Next i
For i = 4 To 7
If Len(Hex(tempSplit(i))) = 1 Then
TempData = TempData & "0" & Hex(tempSplit(i))
Else
TempData = TempData & Hex(tempSplit(i))
End If
Next
Debug.Print TempData
TExistingBalance = Right(TempData, 2) & Mid(TempData, 5, 2) & Mid(TempData, 3, 2) & Left(TempData, 2)
ExistingBalance = (HexToDec(TExistingBalance) / 100)
For i = 8 To 19
If Len(Hex(tempSplit(i))) = 1 Then
gs_Info = gs_Info & "0" & Hex(tempSplit(i))
ElseIf Len(Hex(tempSplit(i))) = 2 Then
gs_Info = gs_Info & Hex(tempSplit(i))
End If
Next i
' ExistingBalance = g_pb_FunFmHexToDec(g_pb_FunFmStrToHex(TempData, True)) / 100
Else
CardType = Chr$(tempSplit(9))
End If
funBCCCompare = 1
End If
ElseIf Length = 6 Then
tempSplit = Split(BCC, ";")
If tempSplit(5) = 3 And tempSplit(2) = 255 Then
funBCCCompare = 99
txtCardNo.Text = ""
Exit Function
End If
End If
Case 20
'write card
tempSplit = Split(BCC, ";")
If tempSplit(0) <> Output(0) Then 'header
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(1) <> Output(1) Then 'ID
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(2) <> 0 Then 'ID
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(3) <> 0 Then
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(4) <> 3 Then
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If
If tempSplit(5) <> 3 Then
funBCCCompare = 99
Exit Function
Else
funBCCCompare = 1
End If End Select
Exit Function
err:
funBCCCompare = 99
MsgBox err.Description
End Function
Dim c As Long, d As Long
Dim i As Integer
Dim Value1 As Double, Value2 As Double
Dim TStr As String
Dim String2 As String
TStr = ""
For i = 1 To (8 - Len(String1))
TStr = TStr & "0"
Next
String1 = TStr & String1
d = 0
Value1 = 0
For c = Len(String1) To 1 Step -1
String2 = Mid(String1, c, 1)
If UCase(String2) = "A" Then String2 = "10"
If UCase(String2) = "B" Then String2 = "11"
If UCase(String2) = "C" Then String2 = "12"
If UCase(String2) = "D" Then String2 = "13"
If UCase(String2) = "E" Then String2 = "14"
If UCase(String2) = "F" Then String2 = "15"
Value2 = Val(String2)
Value1 = Value1 + (Value2 * (16 ^ (8 - c)))
Next
HexToDec = Value1
End FunctionPrivate Function g_pb_FunFmValToStr(l_val&, i_len%, Optional b_Flag As Variant) As String
Dim l_s_Str As String, l_i_Cnt As Integer If IsMissing(b_Flag) Then b_Flag = False l_s_Str = Hex(l_val)
l_s_Str = String(8 - Len(l_s_Str), "0") & l_s_Str g_pb_FunFmValToStr = "" If b_Flag Then
For l_i_Cnt = 7 To 1 Step -2
g_pb_FunFmValToStr = g_pb_FunFmValToStr & Chr("&H" & Mid(l_s_Str, l_i_Cnt, 2))
Next
g_pb_FunFmValToStr = Left(g_pb_FunFmValToStr, i_len)
Else
For l_i_Cnt = 1 To 7 Step 2
g_pb_FunFmValToStr = g_pb_FunFmValToStr & Chr("&H" & Mid(l_s_Str, l_i_Cnt, 2))
Next
g_pb_FunFmValToStr = Right(g_pb_FunFmValToStr, i_len)
End IfEnd Function