用Delphi 6编程实现自动标注汉语拼音

2016-01-29 14:13 39 1 收藏

用Delphi 6编程实现自动标注汉语拼音,用Delphi 6编程实现自动标注汉语拼音

【 tulaoshi.com - Delphi 】

 
用Delphi 6编程实现自动标注汉语拼音

  在使用电脑编辑文档的时候,输入汉语拼音再加上它的声调,是一件令人头痛的事情,特别对于那些经常接触拼音的教师、家长和孩子。虽然 Office XP中已经加入了自动标注汉语拼音的功能,不过,Office XP要####.00元哦。对于没有用上Office XP的人来说,难道就没有办法享受到这种便利吗?好在我们学习了编程,就自己动手吧!

  这篇文章不仅仅是说明如何实现自动标注汉语拼音编程的,我的主要目的是演示解决问题的一般步骤。

  就本问题来说,你是不是有种不知如何下手的感觉?想一想我们在编写汉字GB-BIG5相互转化时的做法:把每一个汉字的GB码、BIG5码都列出来,并一一对应。我们可以仿照这种方法,把每一个汉字(至少6763 个!!!)对应的拼音都列出来,然后就可以查询了。

  不过,我相信你和我一样是懒惰的,懒惰的人通常会花费几倍的时间去找个可以懒惰的办法来。最懒惰的办法是……捡个现成的!先到网上问问看,就选大富翁论坛吧。这里不是大富翁游戏爱好者交流经验的论坛,而是专门讨论Delphi编程的地方,人气也好。登录http://www.delphibbs. com,免费注个册,问问看有没有谁知道如何编,或者能提供个组件什么的。记住要选邮件通知,如果有人回答问题,论坛会自动发邮件通知你,然后你就等着吧。

  闲着也是闲着,在等待的时候我们也该做点什么。首先,应该想到 MSDN,它可是程序员必备的编程参考书(软件)。在MSDN中输入spell 或phoneticize查一下,看看有没有我们想要的信息。你就沿着这条思路试试吧。

还可以想一想,我们以前使用电脑接触到有拼音的地方。输入法!对了,就是拼音输入法!输入拼音我们可以得到汉字。我们能不能通过一种逆运算,输入汉字得到这个汉字的拼音?回答当然是肯定的,这也是本文推荐的方法。

这种方法实际上就是得到汉字的字根。我们仍然可以上论坛去询问,到 MSDN中查找,不过问题要改为“如何得到汉字的字根”。不用说,你已经可以解决本问题了。实际上,此编程主要用到三个函数:

GetKeyboardLayoutList:得到当台计算机中存在的输入法列表;

ImmEscape :得到输入法的名称;

ImmGetConversionList: 看看这个输入法是否支持Reverse Conversion功能,如果支持则继续使用此函数,可取得组字字根信息。

现在简单了,打开Delphi 6,添加两个TEdit控件、三个TBitBtn控件、一个TOpenDialog控件以及若干 Label控件以示说明,窗体设计如图1所示。接着输入下面的源代码,编译通过就可以使用了。主要的地方我已经加了注释。在编译之前,请确定你安装了微软拼音输入法。

程序代码如下:


unit Unit1;


interface


uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,


StdCtrls, ExtCtrls, Buttons, IMM;

type

TForm1 = class(TForm)

OpenDialog1: TOpenDialog;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Edit2: TEdit;

Edit1: TEdit;

Label5: TLabel;

Label1: TLabel;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

public

iHandleCount: integer;

pList : array[1..20] of HKL;

szImeName : array[0..254] of char;

II : integer;

end;


const

pych: array[1..6,1..5] of string[2]=

(('ā', 'á','ǎ','à','a'),('ō', 'ó','ǒ','ò','o'),

('ē', 'é','ě','è','e'),('ī', 'í','ǐ','ì','i'),

('ū', 'ú','ǔ','ù','u'),('ǖ', 'ǘ','ǚ','ǜ','ü'));


var

Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);

var

i: integer;

begin

II := 0;

//retrieves the keyboard layout handles corresponding to the current set of input locales in the system.

iHandleCount := GetKeyboardLayoutList(20, pList);

for i := 1 to iHandleCount do

begin

if ImmEscape(pList[i], 0, IME_ESC_IME_NAME, @szImeName) 0 then

if szImeName='微软拼音输入法' then

begin


StdCtrls, ExtCtrls, Buttons, IMM;

type

TForm1 = class(TForm)

OpenDialog1: TOpenDialog;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Edit2: TEdit;

Ed

来源:http://www.tulaoshi.com/n/20160129/1492783.html

延伸阅读
标签: Delphi
  众所周知,ASP技术是我们在以internet/intranet为平台的web程序的主要技术,在asp应用程序中我们一般使用vbscripts和javascripts两种脚本语言。但是脚本语言是一种非编译的语言,其所开发的web程序存在先天的安全性、执行效率扩张性方面的问题,因此我们一般在开发web系统时用高级语言编写asp执行体,然后用脚本语言作为连接代码...
现在的文档很多都是用Word软件来编辑的,但如果你想在程序中把某些字符插入到Word文档中,那么下面的程序帮你忙: procedure TForm1.Button1Click(Sender: Tobject);var MSWord: Variant;beginMSWord := CreateOLEObject(Word.Application);//连接WordMSWord.Documents.Open(FileName:=d:\test.doc, ReadOnly:=True);//打开外部Word...
如果要做一些比较艺术化的程序时,你会想到插入背景音乐,这时你是否使用了TMediaPlayer控件来播放音乐呢?其实我们大可放弃该方法,直接使用WINDOWS为 我们提供的API函数来播放音乐,方法如下:首先需要在uses部分加入mmsystem,接着写入下列语句,其中e:\1.mid为播放的文件,NN为自定义名称标志 procedure TForm1.Button1Click(Sen...
在使用WPS文字制作语文教学课件或试卷过程中,经常会涉及到拼音的问题,比如会让学生看拼音写汉字,或是给汉字注音等等。这些可以使用WPS的“拼音指南” 来直接完成,不过还是存在一定的难度,虽然与word相比多了个不错的”多音字功能“,尽管如此在实际操作过程中还会有意想不到的问题发生,比如标注拼音后,文字和拼音不...
标签: Web开发
输入汉字,点击“提交”按钮,所输入汉字的拼音就会自动输入出来,该实现方式是在互联网上找到的,但是我做了一些修改,使其用起来更加明了 。 如果有问题,请与我联系:txyhl@126.com   %...@ page language="java" import="java.util.*" contentType="text/html; charset=GBK" % %...! Hashtable ht=new Has...