delphi如何获取汉字拼音及音标? delphi如何获取汉字拼音及音标 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这有一个没音标的http://www.cnblogs.com/wormday/articles/278436.html 我有一个源代码,这个代码正常获取拼音及音标,但是每个汉字后不留空格,我要改一下要留空格的,如何改我不知道代码如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, msime, DB, ADODB;type TForm1 = class(TForm) Button2: TButton; Memo1: TMemo; ADOQuery1: TADOQuery; label2: TLabel; Edit1: TEdit; GroupBox1: TGroupBox; Button1: TButton; EditText: TEdit; MemoOutput: TMemo; Edit2: TEdit; GroupBox2: TGroupBox; Edit3: TEdit; Button3: TButton; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}uses ActiveX, ComObj;procedure TForm1.Button3Click(Sender: TObject);var vGuid: TGUID; vFELanguage: IFELanguage; vError: Integer; vCaps: DWORD; vOutput: PMORRSLT; W: WideString; vPinYin: WideString; S: WideString; I: Integer; iMonoRubyPos: WORD; iReadIdxWDD: WORD; vMonoRubyPos: PWORD; vReadIdxWDD: PWORD;begin Memo1.Clear; if CLSIDFromString(PWideChar(WideString('MSIME.China')), vGuid) <> S_OK then begin ShowMessage(SysErrorMessage(GetLastError)); Exit; end; vError := CoCreateInstance(vGuid, nil, CLSCTX_SERVER, IFELanguage, vFELanguage); if vError <> S_OK then begin ShowMessage(SysErrorMessage(vError)); Exit; end; vError := vFELanguage.Open; if vError <> S_OK then begin ShowMessage(SysErrorMessage(vError)); Exit; end; vCaps := 0; vError := vFELanguage.GetConversionModeCaps(@vCaps); if vError <> S_OK then begin ShowMessage(SysErrorMessage(vError)); Exit; end; vOutput := nil; W := Edit3.Text; vError := vFELanguage.GetJMorphResult(FELANG_REQ_REV, FELANG_CMODE_PINYIN or FELANG_CMODE_NOINVISIBLECHAR, Length(W), PWideChar(W), nil, @vOutput); if vError <> S_OK then begin ShowMessage(SysErrorMessage(vError)); Exit; end; if not Assigned(vOutput) then Exit; vPinYin := Copy(vOutput^.pwchOutput+' ', 1, vOutput^.cchOutput); Memo1.Lines.Add('=' + vPinYin); { vMonoRubyPos := vOutput^.paMonoRubyPos; vReadIdxWDD := vOutput^.pchReadIdxWDD; iReadIdxWDD := 1; iMonoRubyPos := vMonoRubyPos^ + 1; Inc(vMonoRubyPos); I := 1; while I <= Length(W) do begin while I <= vReadIdxWDD^ do begin Inc(I); if I > vReadIdxWDD^ then begin S := Copy(vPinYin, iMonoRubyPos, vMonoRubyPos^ - iMonoRubyPos + 1); if S <> '' then S := Copy(W, iReadIdxWDD, I - iReadIdxWDD) + '(' + S + ')' else S := Copy(W, iReadIdxWDD, I - iReadIdxWDD); Memo1.Lines.Add(S); iReadIdxWDD := I; iMonoRubyPos := vMonoRubyPos^ + 1; Break; end; Inc(vReadIdxWDD); Inc(vMonoRubyPos); end; Inc(vReadIdxWDD); Inc(vMonoRubyPos); end; CoTaskMemFree(vOutput); // 释放资源 vFELanguage.Close; vFELanguage := nil; }end; msime.pas 文件在这个地方可以下载http://download.csdn.net/detail/xsmuhtar/3857627 用GridEH的日期下拉框进行输入时,如何让它只输入日期而不输入时间 请教DBGrid在列中保存数据 如何在我的程序中的页面直接显示网页的内容,30分,新手 请各位高手进来讨论一下代码! To 时间问题. 计算机书籍谁要?限北京 再使用word的窗体里面,一般的界面大家是如何布置? 如何让拖放到窗体上的两个ActiveX控件关联起来? delphi 6中如何读取XML文件 支援 delphi Timer问题 很简单~~看见的都来说两句 数据怎么用饼图、柱状图显示啊
http://www.cnblogs.com/wormday/articles/278436.html
代码如下:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, msime, DB, ADODB;type
TForm1 = class(TForm)
Button2: TButton;
Memo1: TMemo;
ADOQuery1: TADOQuery;
label2: TLabel;
Edit1: TEdit;
GroupBox1: TGroupBox;
Button1: TButton;
EditText: TEdit;
MemoOutput: TMemo;
Edit2: TEdit;
GroupBox2: TGroupBox;
Edit3: TEdit;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses ActiveX, ComObj;procedure TForm1.Button3Click(Sender: TObject);
var
vGuid: TGUID;
vFELanguage: IFELanguage;
vError: Integer;
vCaps: DWORD;
vOutput: PMORRSLT;
W: WideString;
vPinYin: WideString;
S: WideString;
I: Integer;
iMonoRubyPos: WORD;
iReadIdxWDD: WORD;
vMonoRubyPos: PWORD;
vReadIdxWDD: PWORD;
begin
Memo1.Clear;
if CLSIDFromString(PWideChar(WideString('MSIME.China')), vGuid) <> S_OK then
begin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
vError := CoCreateInstance(vGuid, nil, CLSCTX_SERVER,
IFELanguage, vFELanguage);
if vError <> S_OK then
begin
ShowMessage(SysErrorMessage(vError));
Exit;
end;
vError := vFELanguage.Open;
if vError <> S_OK then
begin
ShowMessage(SysErrorMessage(vError));
Exit;
end;
vCaps := 0;
vError := vFELanguage.GetConversionModeCaps(@vCaps);
if vError <> S_OK then
begin
ShowMessage(SysErrorMessage(vError));
Exit;
end;
vOutput := nil;
W := Edit3.Text;
vError := vFELanguage.GetJMorphResult(FELANG_REQ_REV,
FELANG_CMODE_PINYIN or FELANG_CMODE_NOINVISIBLECHAR,
Length(W), PWideChar(W), nil, @vOutput);
if vError <> S_OK then
begin
ShowMessage(SysErrorMessage(vError));
Exit;
end;
if not Assigned(vOutput) then Exit;
vPinYin := Copy(vOutput^.pwchOutput+' ', 1, vOutput^.cchOutput);
Memo1.Lines.Add('=' + vPinYin); { vMonoRubyPos := vOutput^.paMonoRubyPos;
vReadIdxWDD := vOutput^.pchReadIdxWDD;
iReadIdxWDD := 1;
iMonoRubyPos := vMonoRubyPos^ + 1;
Inc(vMonoRubyPos);
I := 1;
while I <= Length(W) do
begin
while I <= vReadIdxWDD^ do
begin
Inc(I);
if I > vReadIdxWDD^ then
begin
S := Copy(vPinYin, iMonoRubyPos, vMonoRubyPos^ - iMonoRubyPos + 1);
if S <> '' then
S := Copy(W, iReadIdxWDD, I - iReadIdxWDD) + '(' + S + ')'
else S := Copy(W, iReadIdxWDD, I - iReadIdxWDD);
Memo1.Lines.Add(S);
iReadIdxWDD := I;
iMonoRubyPos := vMonoRubyPos^ + 1;
Break;
end;
Inc(vReadIdxWDD);
Inc(vMonoRubyPos);
end;
Inc(vReadIdxWDD);
Inc(vMonoRubyPos);
end;
CoTaskMemFree(vOutput); // 释放资源
vFELanguage.Close;
vFELanguage := nil; }
end;
http://download.csdn.net/detail/xsmuhtar/3857627