用Foxpro制作Windows输入法码表
来源: 作者: 出处:综艺读书 2006-11-03
摘 要: 本 文 介 绍 了 一 种 制 作Windows 汉 字 输 入 法 码 表 的 方 法 , 其 特 点 是 自 动 生 成 编 码 及 码 表 文 件 。
关 键 词: 码 表 生 成 器 、 码 表 编 译 、 排 序 、 词 组 文 本 文 件 、 词 组 库 文 件 、Windows 码 表 文 件 。
|
|
|||
1. 格 式 问 题 我 们 虽 然 能 从 许 多 汉 字 系 统 中 取 得 五 笔 字 型 码 表, 但 这 些 码 表 格 式 很 少 与Windows 码 表 格 式 相 同, 因 此 在 用 码 表 生 成 器 编 译 前 需 进 行 格 式 调 整;
2. 编 码 问 题 从 任 何 一 个 汉 字 系 统 都 只 能 得 到 数 量 有 限 的 词 条 , 因 此 我 们 有 必 要 根 据 需 要 自 建 词 组 , 或 把 非 五 笔 字 型 输 入 法( 如Windows3.2 中 的 郑 码) 中 大 量 的 词 组 增 加 到 五 笔 字 型 输 入 法 中 , 而 为 这 些 词 组 逐 一 人 工 编 码 既 费 时 又 易 错;
3. 编 译 限 制 Windows 中 的 码 表 生 成 器 在 对 没 有 按 编 码 排 序 的 码 表 文 件 编 译 时 需 要 排 序 , 但 这 时 它 能 实 际 接 受 的 最 大 编 码 数 为16000 条 左 右 , 超 过 的 部 分 则 无 法 处 理 , 而 且 排 序 时 间 较 长 。 针 对 上 述 问 题 , 我 用Foxpro 编 制 了 一 段 程 序 , 能 较 满 意 地 解 决 以 上 问 题 , 其 特 点 为:
自 动 生 成 编 码 。 只 需 从 任 一 汉 字 输 入 法 中 提 取 词 组 并 舍 去 其 编 码 , 再 不 需 做 任 何 格 式 调 整 , 这 样 我 们 就 会 有 众 多 词 组 源 可 以 利 用 。
自 动 生 成Windows 的 码 表 文 件 。 由 于 在 生 成 码 表 文 件 时 就 已 对 编 码 做 了 排 序 处 理 , 因 而 无 需Windows 的 码 表 编 译 器 再 排 序(Sort=0) , 从 而 不 但 省 去 了 费 时 的 排 序 过 程 , 而 且 使 编 码 数 目 几 乎 没 有 限 制 。
一 、 程 序 说 明
本 程 序 涉 及 的 库 文 件 结 构 为:
Field Field Name Type Width Dec
1 CODE Character 4
2 WORD Character 22
程 序 运 行 之 前 , 需 制 作 两 个 库 文 件:" 单 字.DBF" 和" 字 码.DBF" 。 " 单 字.DBF" 存 放 每 个 汉 字 的 一 、 二 、 三 、 四 级 五 笔 字 型 编 码 。" 单 字.DBF" 可 以 从 其 他 汉 字 系 统 的 五 笔 字 型 码 表 文 件 中 取 得 。 将 取 得 的 单 个 汉 字 及 其 编 码 添 加 到" 单 字.DBF" 即 可 。
" 字 码.DBF" 中 的Word 字 段 是6850 个 汉 字 ,Code 字 段 是 每 个 汉 字 五 笔 字 型 编 码 的 前 二 码 。" 字 码.DBF" 可 以 利 用" 单 字.DBF" 制 作: 先 删 除 其 中 的 一 级 简 码, 再 取 得 每 个 汉 字 和 其 编 码 的 前 两 码, 最 后 删 除 相 同 的 记 录 。
二 、 运 行 过 程
1. 运 行 程 序 的 第 一 步 , 将 要 增 加 的 词 组 文 本 文 件&AppFile..txt 增 补 到 库 文 件&AppDBFile..dbf 的Word 字 段 中;
2. 调 用 过 程DelExistWord 删 除 库 文 件&AppDBFile..dbf 中 与 词 组 库 文 件" 词 组 库.dbf" 重 复 的 记 录 , 以 保 证 增 加 时 不 会 重 复 加 入" 词 组 库.dbf" 中 已 有 的 词 组;
3. 调 用 过 程Generate_WBCode 生 成 库 文 件&AppDBFile..dbf 中Code 字 段 的 五 笔 字 型 编 码 。 首 次 运 行 时 , 本 程 序 将 生 成 库 文 件" 词 组 库.dbf" , 以 后 运 行 时 , 会 把 欲 增 加 的 词 组 及 其 编 码 增 补 到 库 文 件" 词 组 库.dbf" 中 。 在 生 成 编 码 时 要 用 到 库 文 件" 字 码.dbf" 及 其 关 于Word 字 段 的 索 引 文 件" 字 码.cdx";
4. 调 用 过 程ToWinForm 生 成Windows 码 表 文 件 。 运 行 中 用" 单 字.dbf" 和" 词 组 库.dbf" 合 成 所 有 汉 字 、 词 组 的 编 码 库 文 件MBase.dbf 并 生 成 其 索 引 文 件MBase.cdx 。 最 后 由MBase.bdf 生 成Windows 的 码 表 文 件" 五 笔 字 型.txt" 。
三 、 程 序 清 单
Set Talk Off
Set Notify Off
Clear
* 将此程序所在路径设为默认路径
ProgPath=Substr(SYS(16),1,RAT('\',SYS(16))-1)
Set Default To &ProgPath
AppFile = GetFile('TXT', '要增加的词组文件.TXT:', '选择')
AppDBFile= Stuff(AppFile,AT('TXT',AppFile),3,'DBF')
If File(AppDBFile)
Delete File &AppDBFile
EndIf
Create &AppDBFile From Struc
Use &AppDBFile Alias App
Append From &AppFile Fields Word Deli
Delete All For Len(alltrim(word))=0
Pack
If File('词组库.DBF')
Set Message To "删除与'词组库.DBF'重复的词组"
Do DelExistWord
EndIf
Set Message To '正在生成编码'
Do Generate_WBCode
If File('词组库.DBF')
Set Message To '增补到词组库并重新索引'
Use词组库
Append From &AppDBFile
Else
Set Message To '建立词组库和其索引'
Copy File &AppDBFile To词组库.DBF
Use词组库
Index On code Tag code
Index On Word Tag Word Of词组库
EndIf
Use
Delete File &AppDBFile
Set Message To '正在生成Windows的码表文件'
Do ToWinForm
Set Message To 'Windows格式码表文件生成完毕!'
Wait Window TimeOut 5
Set Talk On
Set Notify On
Set Message To
Return
* ******** 子过程 ***********
&&检查是否和'词组库.DBF'有重码
Procedure DelExistWord
Select 0
Use词组库
Set Order to Word
Select App
Set Relation To Word Into词组库
Go Top
Do While .Not.Eof('App')
IF .Not.Eof('词组库')
Delete
EndIf
Skip
EndDo
Pack
Select词组库
Use
Return
&&生成五笔字型编码
Procedure Generate_WBCode
Private WBCode,WordString,WordLength,I
Select 0
Use字码 Order Tag Word of字码
Select App
Goto Top
Do While .Not.Eof('App')
WBCode=''
WordString=Word
WordLength=Len(AllTrim(WordString))
Select字码
Do Case
Case WordLength=4
For I=1 TO 2
ZI=SubStr(WordString,2*I-1,2)
Find &ZI
WBCode=WBCode+Code
Next
Case WordLength=6
For I=1 TO 3
ZI=SubStr(WordString,2*I-1,2)
Find &ZI
Do Case
Case I=1 .OR. I=2
WBCode=WBCode+SubStr(Code,1,1)
Case I=3
WBCode=WBCode+Code
EndCase
Next
Case WordLength=8
For I=1 TO 4
ZI=SubStr(WordString,2*I-1,2)
Find &ZI
WBCode=WBCode+SubStr(Code,1,1)
Next
Case WordLength>8
For I=1 TO 3
ZI=SubStr(WordString,2*I-1,2)
Find &ZI
WBCode=WBCode+SubStr(Code,1,1)
Next
ZI=SubStr(WordString,WordLength-1,2)
Find &ZI
WBCode=WBCode+SubStr(Code,1,1)
EndCase
Select App
Replace Code With WBCode
Skip
EndDo
Close Databases
Return
&&生成Windows格式码表文件
Procedure ToWinForm
Private Head,Word_Code,txt,i
If File('MBase.DBF')
Delete File MBase.DBF
Delete File MBase.CDX
EndIf
Create MBase From Struc
Append From单字
Append From词组库
Index On Code Tag Code Of Mbase
Dimension MbHead[7]
Dimension Word_Code[2]
MbHead[1]= '[Description]'
MbHead[2]= 'Name=五笔字型'
MbHead[3]= 'MaxCodes = 4'
MbHead[4]= "UsedCodes='abcdefghijklmnopqrstuvwxy"
MbHead[5]= 'WildChar=z'
MbHead[6]= 'Sort=0'
MbHead[7]= '[text]'
MBText= '五笔字型.txt'
txt=FCreate(MBText)
For i=1 to 7
= Fputs(txt,MbHead[i])
Next
Goto Top
Do While .Not.Eof()
Scatter TO Word_Code
Skip
= Fputs(txt,AllTrim(Word_Code[2])+AllTrim(Word_Code[1]))
EndDo
Use
=FClose(txt)
Delete File MBase.DBF
Delete File MBase.CDX
Return
该 程 序 使 用 的 机 器 为386DX33,4M , 在Foxpro For Windows2.5b 环 境 下 运 行 通 过 。
相关图文阅读
频道图文推荐
相关专题
·五笔输入法专题 (296篇文章)
·Windows操作系统安装 (12137篇文章)
·输入法专题 (240篇文章)
·Windows权限设置 (7798篇文章)
·拼音输入法专题 (358篇文章)
·Windows操作系统安全集 (14759篇文章)
·Windows频道 (7404篇文章)
·Windows操作系统安装 (12137篇文章)
·输入法专题 (240篇文章)
·Windows权限设置 (7798篇文章)
·拼音输入法专题 (358篇文章)
·Windows操作系统安全集 (14759篇文章)
·Windows频道 (7404篇文章)
最新技术文档
·用FoxWeb在网上快速发布你的FOXPRO数据库 11-03
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




