Hi all,
Can someone help me out with this code? Keep getting a type mismatch error in the function convert at the line "digit = Asc(temp(I)) > 47 And Asc(temp(I)) < 58"
Maybe ik keep overlooking something, dont know.
Thx in advance
Can someone help me out with this code? Keep getting a type mismatch error in the function convert at the line "digit = Asc(temp(I)) > 47 And Asc(temp(I)) < 58"
Maybe ik keep overlooking something, dont know.
Thx in advance
Code:
strBar = "702000000036000063053309999000500"
valid = False
message = ""
prev = ""
l = 1
While l > 0
message = getmsg(strBar)
If message > "" Then
convmess = convert(message)
valid = False
l = Len(message)
End If
Wend
Public Function getmsg(message As String)
While Not valid
chars = mysplit(message)
l = Len(message)
If l > 0 Then
valid = True
For I = 1 To l
If Asc(chars(I)) > 127 Then
valid = False
char = chars(I)
Exit For
End If
Next
If Not valid Then
MsgBox "Invalid character: " & char, vbCritical, "Error"
prev = message
message = ""
End If
Else
valid = True
End If
Wend
getmsg = message
End Function
Public Function convert(chars)
ReDim chrs(l + 1)
temp = chars
Start = 104
Mode = 0
M = 1
For I = 1 To l + 1
sw = True
If I < l + 1 Then
digit = Asc(temp(I)) > 47 And Asc(temp(I)) < 58
If (Mode = 0 And Not digit) Or (Mode = 1 And digit) Then sw = False
End If
If Mode = 0 Then
If sw Then
ind = I
Mode = 1
Else
chrs(M) = Asc(temp(I)) - 32
M = M + 1
End If
ElseIf sw Then
If I - ind < 4 Then
For j = 0 To I - ind - 1
chrs(M + j) = Asc(temp(ind + j)) - 32
Next
M = M + I - ind
If I < l + 1 Then
chrs(M) = Asc(temp(I)) - 32
M = M + 1
End If
Else
If ind = 1 Then
Start = 105
Else
chrs(M) = 99
M = M + 1
End If
n = Int((I - ind) / 2)
For j = 0 To n - 1
chrs(M + j) = 10 * temp(ind + 2 * j) + temp(ind + 2 * j + 1)
Next
M = M + n
If I < l + 1 Then
chrs(M) = 100
M = M + 1
End If
If (I - ind) Mod 2 = 1 Then
chrs(M) = Asc(temp(I - 1)) - 32
M = M + 1
End If
If I < l + 1 Then
chrs(M) = Asc(temp(I)) - 32
M = M + 1
End If
End If
Mode = 0
End If
Next
Check = Start
For I = 1 To M - 1
Check = Check + chrs(I) * I
Next
ch = Chr((Check Mod 103) + 32)
chrs(M) = Check Mod 103
For I = 1 To M
If chrs(I) < 96 Then
chrs(I) = Chr(chrs(I) + 32)
Else
chrs(I) = Chr(chrs(I) + 97)
End If
Next
convert = Chr(Start + 97) & Join(chrs, "") & Chr(203)
End Function
Function mysplit(text)
Dim myarray()
ReDim myarray(Len(text))
For I = 1 To Len(text)
myarray(I) = Mid(text, I, 1)
Next
mysplit = myarray
End Function