Public Function IsGoodUCase(Optional fUnicode As Boolean) As Boolean
' note: fUnicode is not used for VBspeed's ANSI UCase/LCase
Dim i As Long
Dim charOrg As String
Dim charU As String
Dim sFoo As String
Dim fFailed As Boolean
If fUnicode Then
' Unicode
For i = &H8000 To &H7FFF
charOrg = ChrW$(i)
If AscW(charOrg) <> AscW(UCase$(charOrg)) Then
' 63 = "?" comes very often, probably means: UCase Unknown
If AscW(UCase$(charOrg)) <> 63 Then
If UCase03(charOrg) <> UCase$(charOrg) Then
Stop: fFailed = True
End If
End If
End If
Next
Else
' ASCII/ANSI
With New CCaseDon
For i = 0 To 255
charOrg = Chr$(i)
charU = UCase02(charOrg)
If charU <> UCase$(charOrg) Then
' stooges: WHY do numbers > 255 come up at all ???
' š 154/353 Š 138/352
' œ 156/339 Œ 140/338
' ž 158/382 Ž 142/381
' ÿ 255/255 Ÿ 159/376
Debug.Print "' "; charOrg & " " & Asc(charOrg) & "/" & AscW(charOrg), _
UCase$(charOrg) & " " & Asc(UCase$(charOrg)) & "/" & AscW(UCase$(charOrg))
Stop
fFailed = True
End If
Next
sFoo = Chr$(154) & Chr$(156) & Chr$(158) & Chr$(255)
If UCase02(sFoo) <> UCase$(sFoo) Then Stop: fFailed = True
sFoo = "HeyHey"
If UCase02(sFoo) <> UCase$(sFoo) Then Stop: fFailed = True
sFoo = ""
If UCase02(sFoo) <> UCase$(sFoo) Then Stop: fFailed = True
End With
End If
IsGoodUCase = Not fFailed
End Function
Back to UCase