英汉双向字典DIY

来源:百度文库 编辑:神马文学网 时间:2024/04/30 00:36:04
江苏 佘明祥
如今,各种电子字典争奇斗艳,各显神通,尽管软件很多,却有衣多难寻合身之物的感觉,能否集众家之长,根据自己的需要DIY一个电子字典呢?只要稍懂一点编程知识,按以下步骤操作即可。
一、字典库
字典库是电子字典的核心,还是借一个来用吧!我的经验是可以多下载几个电子字典,分别将它们安装到自己的机器中,然后其安装文件夹中找字典库文件,找一个自己认为最全(收录词条最多)的稍作修改即可。大多数软件的字典库文件是文本文件或Access数据库文件,也有的是特定格式的文件,Access文件基本不要处理;文本文件要转化为数据库文件,建议先用Excel打开它,在向导的指引下将其转化为Excel文件,然后再导入数据库文件,进一步修改导入数据表的字段名称、类型、长度;特定文件格式的转化需一点软件功夫,这里不便多说。我所用字典库是“创世纪英语”(Century word)中的Xdict.mdb文件,其中的数据表Word存放了字典信息,为了直观,将英文单词的字段名改为“英语”,汉语解释的字段名改为“汉语”,音标的字段名改为“音标”。Access数据库文件不需再转化,并且它既收有单词又收有短语,总共有35426条,已能充分满足我们需要。
二、选择语言与设计界面
对于这样一个字典软件,无论是Visual Basic、Visual C++、Power Builder、Delphi还是Borland C++ Builder均可,关键选择一个自己熟悉的开发工具。我比较熟悉BCB 6.0,只要15分钟便搭起软件的框架:这是一个英汉互查软件,既能查单词又能查短语,还能查英语同意词,界面如下:

参考上图,让我们设计软件界面:在窗体上放两个文本框,文本框1用于待查英文单词的输入,文本框2用于待查汉字的输入;放一个数据集控件连接到字典库(Xdict.mdb中的表Word);放一个DBGrid框用于显示查询结果,如果使用Delphi或BCB还要加一个DataSource控件将数据集与DBGrid绑定在一起。
三、英汉功能
考虑到从左向右的模查找功能非常实用,在文本框1的Change事件使用查询语句:
"Select * from word where 英语 like ‘" + st1 + "%‘"
st1是文本框1中输入的待查字符。就这么简单,单词、词组均能查,还有模糊逐级查找功能,一般的电子字典可不具备吧!
四、汉英功能
这个字典库不是汉英字典库,不过没关系,采用任意模糊查询方式,将与待查汉字有关的记录,在DBGrid框统统列出来,你要查的东东肯定就在其中,至此我们又发现一新的收获,汉英字典又成了英语同意词字典,岂不是一箭“多”雕。你所要做的是在文本框2的Chang事件中使用查询:
"Select * from word where 汉语 like ‘%" + st2 + "%‘"
其中st2是文本框2中输入的待查字符。
五、显示音标
现在字典做好了,但国际音标出不来,原因是没有相应的音标字体,老规矩,还是借用一下吧。从网上下载一个金山词霸,在其压缩包中找到名为“ksphonet.ttf”的文件,将其解开复制到Winnt\fonts或Windows\fonts文件夹中,当然,你也可将金山词霸在你的机器上安装一遍,让字体文件自动复制。将DBGrid框中的音标所列字体设置为“kingsoft Phonetic Plain” ,国际音标能显示了。
六、Borland C++ Builder实例介绍
新建一个工程,向窗体Form1中拖2个Label控件,2个Edit控件,1个ADOQuery控件,1个DataSource控件,1个DBGrid控件,Label1的Caption属性写上“英语”,在它的右侧放Edit1用于输入待查的英文单词或短语,Label2的Caption属性写上“汉语”,在它的右侧放Edit2用于输入待查的汉字;DataSource的DataSet属性置为“ADOQuery1”;DBGrid1的DataSource属性置为“DataSource1”;ADOQuery1的ConnecttionStringn属性写成“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\dict_diy\dict.mdb;Persist Security Info=False”(设数据库文件的路径是d:\dict_diy\dict.mdf),如果想让数据库的位置是动态,则在窗体加一OpenDialog控件用于确定文件路径,然后在代码中写上ADOQuery1->ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+OpenDialog->FileName+";Persist Security Info=False"即可。
Edit1用于英译汉查询,其过程为:
void __fastcall TForm1::Edit1Change(TObject *Sender){ ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("select 英语, 音标,汉语 from word where 英语 like ‘"+ Edit1->Text+"%‘"); ADOQuery1->Open();}
Edit2用于汉译英查询,其过程为:
void __fastcall TForm1::Edit2Change(TObject *Sender){ ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("select 英语, 音标, 汉语 from word where 汉语 like ‘%"+ Edit2->Text+"%‘"); ADOQuery1->Open();}
要写的全部代码就这么多。为了能让DBGrid1显示音标,要使DBGrid1产生静态音标列,并将该列的字体设为“kingsoft Phonetic Plain”。
字典做好了,你还根据需要使它功能更多,外观更华丽,总之DIY的“衣服”最合身!
_xyz