输入法继续写之:五笔容错处理~

因为五笔难学,所以特别对某些字进行容错。。这样可以明显提高输入效率。。

例如:张 五笔全码是XTAY ... 但是XTA也没有其它的字,所以给予容错处理...你输入XTA也可以打出张字。。。当然了,张字的二级简码是XT... 这里只是举例一下。。。

要进行此项处理,首先得提取所有单字4码的词条, code如下:

   Dim BM As String
   Dim CI As String
   Dim JS As Long, n As Long

       Form5.Show
       Form5.Label1.Caption = "正在分析编码..."
    
       Set rs = ADO.CreateRecordset("SELECT * FROM YS_WB86")
       
       n = rs.RecordCount
     
       While rs.EOF = False
     
         BM = rs.Fields(0)
         CI = rs.Fields(1)
                 
         If Len(BM) = 4 And Len(CI) = 1 Then
               
            Open App.Path & "/3machk.txt" For Append As #1
                 Print #1, Left$(BM, 3); ","; CI
            Close #1
         
         End If
         
         JS = JS + 1: DoEvents
         Form5.ProgressBar1.Value = (JS / n) * 100
         
         rs.MoveNext
         
       Wend
       
       Form5.Hide


 

第二步,检查这些词条的前3码是否有别的字,code如下:

   Dim BM As String, diyBM As String
   Dim CI As String, diyCI As String
   Dim fgDiyCiAlreadyExist As Integer
       
    '载入要分析的词条文件
    Open App.Path & "/3machk.txt" For Input As #2
               
         Do
         
            Input #2, diyBM, diyCI
            
            Set rs = ADO.CreateRecordset("SELECT * FROM YS_WB86 where [BianMa] =  '" + diyBM + "'")
            
            '分析编码是否已经存在
            Do While rs.EOF = False
     
               BM = rs.Fields(0)
               CI = rs.Fields(1)
         
               '如果编码已存在
               If BM = diyBM Then
                  fgDiyCiAlreadyExist = 1       '完了,编码已经存在
               End If
         
               rs.MoveNext
         
            Loop
            '如果不存在,则可添加
            If fgDiyCiAlreadyExist = 0 Then
            
               Label3.Caption = " “" & diyBM & "”可加为容错码..."
            
               Open App.Path & "/3ma.txt" For Append As #1
                  Print #1, diyBM; ","; diyCI
               Close #1
               
            Else
               Label3.Caption = " “" & diyBM & "”已存在,跳过..."
            End If
            
            fgDiyCiAlreadyExist = 0       '清0,为下一次比较作准备
            DoEvents
            
         Loop Until EOF(2) = True
                
    Close #2


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值