国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

在VFP中編程中自動產生漢字的拼音

2024-07-21 02:05:20
字體:
來源:轉載
供稿:網友

  在編寫數據庫應用程序時,常常需要設計對人名、地名等各種漢字信息進行查找的功能。

如果只允許用戶輸入漢字來查找,會使得查找功能不靈活,不完善;但如果允許用戶輸入漢字的拼音作為查找條件,除了多設一個儲存漢字拼音的字段外,最大的問題在于輸入資料時還得額外輸入漢字的拼音,大大增加了輸入的工作量。能不能通過編程的手段在輸入漢字資料時自動產生其對應的拼音,從而解決這個矛盾呢?答案是肯定的,下面介紹的方法就能讓您輕松實現這個目的,為簡單敘述起見,我們假設只需要產生漢字的聲母,而不要韻母(無聲母的則取韻母的第一個字母)。

---- 要自動產生拼音,首先必須有個漢字-拼音對照表。去哪里找這個表?自己動手可做一個。做表的方法較復雜,要先用工具生成漢字與拼音對應的文本文件,再用編程的手段將需要的內容加在數據表中。下面介紹一種具體的操作方法:

---- 第一步,利用“windows 95附件”中“輸入法生成器”的逆轉化功能,將拼音輸入法的碼表文件“c:/windows/system/winpy.mb”逆轉換為文本文件“c:/winpy.txt”(當然轉換后的文件任您取名和指定位置)。用寫字板打開此文本文件,可以看到這樣的文字:

[description]
name=全拼
maxcodes=12
maxelement=1
usedcodes=abcdefghijklmnopqrstuvwxyz
wildchar=?
numrules=3
[rule]
ca4=p10+p20+p30+p40
ce2=p10+p20
ce3=p10+p20+p30
[text]
啊a
阿a
呵a
吖a
嗄a
腌a
錒a
阿爸aba
阿昌achang

---- 顯然,最前面12行此時對于我們來講是完全無用的,可用手工將之刪除。另外,文件中還有大量的詞的編碼,如“阿爸aba”、“阿昌achang”等,對我們也是無用的,如何將之去掉使得文件中只保留單字及其編碼呢?用手工顯然太麻煩,只能靠一段小程序了。我們這樣考慮,如果某行是單字及其編碼,則這行的第三個字符肯定是字母,可以取這行的前三個字符存放在另一個文件中;而如果某行是詞,則第三個字符是漢字的一部分,其asc值在128以上,我們就不用管它。
---- 下面給出這段小程序:

newfile=fcreate('c:/py.txt')
&&創建文件,用于儲存單字及其編碼的文本
oldfile=fopen('c:/winpy.txt') && 打開文件
=fseek(oldfile, 0) && 移動指針到文件頭
do while not feof(oldfile)
c=left(fgets(oldfile),3)
if asc(right(c,1))< 128 then
cc=chr(34)-left(c,2)-chr(34)-","-chr(34)-right(c,1)-chr(34)
=fputs(newfile, cc) &&以"字","z" 這樣的格式寫在新文件里
endif
enddo
= fclose(newfile) && 關閉文件
= fclose(oldfile) && 關閉文件
creat table py (漢字 c(2),拼音 c(1)) &&創建新表
use py &&打開此表
append from c:/py.txt type delimited &&從文本中追加數據
use


---- 運行這段程序后,一個存有漢字和拼音首個字母的表py就產生了。將這個表加入到我們的數據庫中,并根據漢字建立索引,就可以使用這個表了。
---- 接下來要解決的問題是:輸入漢字后,如何將之轉換為拼音呢?假設在一個表單里已經建立了一個名為“漢字”的文本框用于輸入漢字和一個名為“拼音”的文本框用于顯示漢字對應的拼音。我們可在“漢字”這個文本框的lostfoucs事件中寫入如下代碼:

local a,b,c
c=""
b=""
a=thisform.漢字.value
select py &&假設此表在此之前已經打開且已經指定索引
for i=2 to len(a) step 2
store right(left((a),i),2) to b
seek b
store c-py.拼音 to c
next i
thisform.拼音.value=c

---- 至此,自動產生拼音的工作可以說成功完成了。至于如何添加在你的資料表上,就不必羅嗦了。這個方法為我們設計數據庫應用軟件帶來了極大的好處,希望對大家有點啟發作用。

技術交流 永無止境

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 钦州市| 和政县| 苍溪县| 邵阳市| 桐庐县| 若羌县| 扬中市| 伽师县| 龙陵县| 安泽县| 保定市| 米易县| 普洱| 大名县| 鄂托克旗| 焦作市| 长春市| 刚察县| 应城市| 桓仁| 夏河县| 武清区| 遂平县| 麟游县| 韶山市| 宁城县| 岳西县| 湖南省| 扬中市| 维西| 雷山县| 禄丰县| 溆浦县| 靖江市| 察隅县| 定远县| 亳州市| 蒙山县| 台南县| 伊川县| 开平市|