在VFP中编程自动产生所输入汉字的拼音
我们在编写数据库应用软件时,经常需要设计搜索人名、地名等各种汉字的功能。
如果只允许用户输入汉字进行搜索,搜索功能会不灵活,不完善;但如果让用户输入汉字拼音作为搜索条件,问题就出在输入数据时额外输入汉字拼音,大大增加了输入工作量。难道编程输入汉字时不能自动生成对应的拼音,来解决这个矛盾吗?答案是肯定的,下面介绍的方法可以让你轻松实现这个目标。为了简单起见,我们假设只需要生成汉字的声母,不需要生成韵母(声母不发音的取韵母的第一个字母)。
要自动生成拼音,首先要有一个汉字-拼音对照表。我能在哪里找到这块手表?你可以自己做一个。做桌子的方法很复杂。首先需要使用工具生成汉字和拼音对应的文本文件,然后通过编程的方式将需要的内容添加到数据表中。下面是具体的操作方法:
第一步,利用“Windows 95附件”中“输入法生成器”的逆向功能,将拼音输入法的码表文件“c:\windows\system\winpy.mb”逆向转换为文本文件“c:\winpy.txt”(当然,可以命名并指定转换后文件的位置)。用写字板打开这个文本文件,可以看到这样的文字:
[Description]
Name=完整拼写
max codes = 12
max element = 1
used codes = abcdefghijklmnopqrstuvwxyz
wild char =?
num rules = 3
[rule]
ca4 = P10+P20+P30+P40
Ce2 = P10+P20
Ce3 = P10+P20+P30
很明显,前12行此时对我们来说完全没有用,可以手动删除。此外,档案中还有大量的字码,如“阿爸阿爸”“阿昌阿昌”等,对我们来说也是无用的。我们怎样才能删除它们,使文件中只保留单个单词及其代码呢?手工做显然太麻烦,只能靠一个小程序。我们这样考虑吧。如果一行是一个单词及其代码,那么这一行的第三个字符必须是一个字母,所以你可以取这一行的前三个字符存储在另一个文件中。如果一行是一个字,第三个字是汉字的一部分,它的asc值在128以上,我们不用担心。
这里有一个小程序:
file = fcreate(' c:\ py . txt ')
& &创建一个文件来存储单个单词及其编码文本
old file = fopen(' c:\ winpy . txt ')& &打开文件
= fseek(old file,0) &&将指针移动到文件头
do while not feof(旧文件)
c = left (fgets(旧文件),3)
if ASC (right (c cc)&&与“word”一起,将“z”的格式写入新文件
endif
enddo
= fclose(new file)& & close file
创建表格py(汉字c(2))拼音C (1)&&创建新表格
使用py &&打开此表格
append from C:\ py . txt type delimited & & append data from text
使用
运行此程序后,产生一个包含汉字和拼音首字母的表PY。把这个表加到我们的数据库里,按汉字索引,就可以用这个表了。
接下来要解决的问题是:输入汉字后,如何转换成拼音?假设在一个表单中设置了一个名为“汉字”的文本框来输入汉字,并设置了一个名为“拼音”的文本框来显示相应的汉字拼音。我们可以在汉字文本框的LostFoucs事件中编写以下代码:
local a,B,C
C = " "
B = " "
A = this form。汉字。value
select py &&假设这个表之前已经打开过,I = 2的索引
len(a)Step 2[/br 2]to b
seek b
存储c-py。拼音到c
下一步我
这种形式。拼音。值=c
至此,拼音的自动生成可以说是顺利完成了。至于如何添加到你的数据表中,没必要多言。这种方法给我们设计数据库应用软件带来了很大的好处,希望对大家有所启发。
位律师回复
0条评论