Visual Basic6编程中的汉字处理(3)

2008-02-23 06:50:30来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  Dim rec As Integer

  Dim Location As Long '汉字在字库中的位置

  Dim Hz(0 To 31) As Byte '转换完的32字节的字模数据

  Dim Buf1(0 To 31) As Byte '暂存转换过程中的32字节字模数据

  Dim HzAll( ) As Byte '存放全部字模数据的动态数组

  Dim LoopAll As Integer

  Dim bit, k2, k3 As Byte

  Dim i, j, i1, k, k1, k4, k5, k6 As Integer

  DestTxt.Text = "" 'DestTxt是目标文本框,存放转换后的16进制数据

  Flag = 0

  TempDestFile$ = App.Path "\" "TempDest.txt"

  If FileExists(TempDestFile$) Then Kill TempDestFile 'FileExists是一个检查文件是否存在的自定义函数

  If SrcTxt.Text = "" Then '汉字输入框内无汉字则退出

  MsgBox "没有可以转换的字模源文件!"

  Exit Sub

  End If

  HzNum = Len(SrcTxt.Text) '获得汉字的个数

  ReDim HzAll(0 To HzNum * 32 - 1) '重新定义动态数组的上界

  Open TempFile For Output As #1

  Print #1, SrcTxt.Text

  Close #1

  For LoopAll = 0 To HzNum - 1

  Open TempFile For Binary Access Read As #1 '按二进制方式打开

  Get #1, 2 * LoopAll 1, p

  Close #1

  C1 = CStr(p(1)) - &Ha1 '区内码

  C2 = CStr(p(2)) - &Ha1 '位内码

  rec = C1 * 94 C2

  Location = CLng(rec) * 32 1 '该汉字在16*16点阵字库中字模第一个字节的位置

  HzFile = App.Path "\" "hzk16"

  Open HzFile For Binary Access Read As #1 '读取该汉字在16点阵字库中的原始字模

  Get #1, Location, Hz

  Close #1

  '以下是将UCDOS字库的存储格式调整为HD61202的规范格式

  For j = 0 To 3

  If j = 0 Then k4 = 14

  If j = 1 Then k4 = 15

  If j = 2 Then k4 = 30

  If j = 3 Then k4 = 31

  For k = 0 To 7

  bit = &H80

  bit = byteRight((bit), (k))

  For i = 0 To 7

  k2 = byteleft(Buf1(j * 8 k), 1) '整个流程是由低位向高位移动,最后凑成一个字节

  k3 = byteRight((Hz(k4 - i * 2) And bit), 7 - k) '将字节中的某位移到最低位

  k3 = k3 And &H1 '屏蔽掉其余7位

  Buf1(j * 8 k) = k2 Or k3

  Next i

  Next k

  Next j

  For i1 = 0 To 31 '将调整后的汉字字模再装入原数组

  Hz(i1) = Buf1(i1)

  HzAll(LoopAll * 32 i1) = Buf1(i1)

  Next

  Next LoopAll

  Open TempDestFile For Binary Access Write As #1 '转换结果保存到TempDestFile中

  Put #1, 1, HzAll

  Close #1

  MsgBox "OK!"

  End Sub

  以上程序均在中文VB6专业版上调试通过。

  以上程序在实用中取得了很好的效果。此汉字字模转换程序丰富了单片机系统开发工具的功能,是包含液晶显示功能的单片机系统在系统调试和开发过程中不可或缺的功能模块。

上一篇: VB编程经验之谈----打印篇
下一篇: VB编程:Windwos API全攻略

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在你的应用程序里实现简单的加密

下一篇:FSO对象模型在VB中的应用