delphi 编程把若干个汉字用拼音拼写出来 delphi 编程把若干个汉字用拼音拼写出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般的做法,是将所有汉字的拼音放入数据库,然后通过数据库来查不过我要用另一方法,利用系统输入法本身的反查功能,如果你的机上装上了全拼,试试以下程序unit getime;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,imm;type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}//function ImmEscape(pt:HKL;na:pchar;e_name:integer;iname:pchar):integer;stdcall;external 'imm32.dll';procedure TForm1.Button1Click(Sender: TObject);var pt: array[0..20] of HKL; iname :array [0..256] of char; buff:TCandidateList; s:string; i,ct,ct1,dwg:integer; p:pchar; c:pchar;begin c:='好人'; //要查的字或词组,注意:不能查句子,要查句子,自己写一个循环函数吧 ct := GetKeyboardLayoutList(20,pt ); // ct = 机上输入法个数 ct1:=-1; for i:=0 to ct do begin dwg:=ImmEscape(pt[i], 0, IME_ESC_IME_NAME,@iname[0] ); if dwg>0 then if string(iname)='全拼' then begin ct1:=i; break; end; end; if ct1=-1 then begin ShowMessage('机上没安装全拼输入法,程序退出'); exit; end; ActivateKeyboardLayout(pt[ct1],0); // 切换到该输入法 dwg:=ImmGetConversionList(pt[i],0,c,nil,0,GCL_REVERSECONVERSION); if (dwg<=0) then // 是否可反查 begin ShowMessage('明的全拼找不到,程序退出'); end; ImmGetConversionList(pt[i],0,c,@buff,dwg,GCL_REVERSECONVERSION); p:=pchar(@buff); inc(p,byte((p+24)^)); s:=p; Memo1.Lines.add(s); // 结果在x中为:haorenend;end. unit IMCode; // 简化版拼音反查单元interface{ iMode 二进制功能位说明 X X X X X X X X X X X X X X X X 3 2 1 1: 0 - 只取各个汉字声母的第一个字母; 1 - 全取 2: 0 - 遇到不能翻译的字符不翻译; 1 - 翻译成 '?' (本选项目针对全角字符) 3: 0 - 生成的串不包括非数字, 字母的其他字符; 1 - 包括 (控制全角的要输出非数字, 字母字符的; 半角的非数字, 字母字符)}function MakeSpellCode(stText: string; iMode, iCount: Integer): string;function GetSpellCode(szText: PChar; iMode, iCount: Integer): PChar; stdcall;implementationuses SysUtils;type { 拼音代码表 } TPYCode = record PYCode: string[6]; end; TFPYCodes = array [1..126, 1..191] of TPYCode;const PYMUSICCOUNT = 405; PyMusicCode: array [1..PYMUSICCOUNT] of string[6] = { 汉字基本发音表 } ( 'a', 'ai', 'an', 'ang', 'ao', 'ba', 'bai', 'ban', 'bang', 'bao', 'bei', 'ben', 'beng', 'bi', 'bian', 'biao', 'bie', 'bin', 'bing', 'bo', 'bu', 'ca', 'cai', 'can', 'cang', 'cao', 'ce', 'ceng', 'cha', 'chai', 'chan', 'chang', 'chao', 'che', 'chen', 'cheng', 'chi', 'chong', 'chou', 'chu', 'chuai', 'chuan', 'chuang', 'chui', 'chun', 'chuo', 'ci', 'cong', 'cou', 'cu', 'cuan', 'cui', 'cun', 'cuo', 'da', 'dai', 'dan', 'dang', 'dao', 'de', 'deng', 'di', 'dian', 'diao', 'die', 'ding', 'diu', 'dong', 'dou', 'du', 'duan', 'dui', 'dun', 'duo', 'e', 'en', 'er', 'fa', 'fan', 'fang', 'fei', 'fen', 'feng', 'fu', 'fou', 'ga', 'gai', 'gan', 'gang', 'gao', 'ge', 'ji', 'gen', 'geng', 'gong', 'gou', 'gu', 'gua', 'guai', 'guan', 'guang', 'gui', 'gun', 'guo', 'ha', 'hai', 'han', 'hang', 'hao', 'he', 'hei', 'hen', 'heng', 'hong', 'hou', 'hu', 'hua', 'huai', 'huan', 'huang', 'hui', 'hun', 'huo', 'jia', 'jian', 'jiang', 'qiao', 'jiao', 'jie', 'jin', 'jing', 'jiong', 'jiu', 'ju', 'juan', 'jue', 'jun', 'ka', 'kai', 'kan', 'kang', 'kao', 'ke', 'ken', 'keng', 'kong', 'kou', 'ku', 'kua', 'kuai', 'kuan', 'kuang', 'kui', 'kun', 'kuo', 'la', 'lai', 'lan', 'lang', 'lao', 'le', 'lei', 'leng', 'li', 'lia', 'lian', 'liang', 'liao', 'lie', 'lin', 'ling', 'liu', 'long', 'lou', 'lu', 'luan', 'lue', 'lun', 'luo', 'ma', 'mai', 'man', 'mang', 'mao', 'me', 'mei', 'men', 'meng', 'mi', 'mian', 'miao', 'mie', 'min', 'ming', 'miu', 'mo', 'mou', 'mu', 'na', 'nai', 'nan', 'nang', 'nao', 'ne', 'nei', 'nen', 'neng', 'ni', 'nian', 'niang', 'niao', 'nie', 'nin', 'ning', 'niu', 'nong', 'nu', 'nuan', 'nue', 'yao', 'nuo', 'o', 'ou', 'pa', 'pai', 'pan', 'pang', 'pao', 'pei', 'pen', 'peng', 'pi', 'pian', 'piao', 'pie', 'pin', 'ping', 'po', 'pou', 'pu', 'qi', 'qia', 'qian', 'qiang', 'qie', 'qin', 'qing', 'qiong', 'qiu', 'qu', 'quan', 'que', 'qun', 'ran', 'rang', 'rao', 're', 'ren', 'reng', 'ri', 'rong', 'rou', 'ru', 'ruan', 'rui', 'run', 'ruo', 'sa', 'sai', 'san', 'sang', 'sao', 'se', 'sen', 'seng', 'sha', 'shai', 'shan', 'shang', 'shao', 'she', 'shen', 'sheng', 'shi', 'shou', 'shu', 'shua', 'shuai', 'shuan', 'shuang', 'shui', 'shun', 'shuo', 'si', 'song', 'sou', 'su', 'suan', 'sui', 'sun', 'suo', 'ta', 'tai', 'tan', 'tang', 'tao', 'te', 'teng', 'ti', 'tian', 'tiao', 'tie', 'ting', 'tong', 'tou', 'tu', 'tuan', 'tui', 'tun', 'tuo', 'wa', 'wai', 'wan', 'wang', 'wei', 'wen', 'weng', 'wo', 'wu', 'xi', 'xia', 'xian', 'xiang', 'xiao', 'xie', 'xin', 'xing', 'xiong', 'xiu', 'xu', 'xuan', 'xue', 'xun', 'ya', 'yan', 'yang', 'ye', 'yi', 'yin', 'ying', 'yo', 'yong', 'you', 'yu', 'yuan', 'yue', 'yun', 'za', 'zai', 'zan', 'zang', 'zao', 'ze', 'zei', 'zen', 'zeng', 'zha', 'zhai', 'zhan', 'zhang', 'zhao', 'zhe', 'zhen', 'zheng', 'zhi', 'zhong', 'zhou', 'zhu', 'zhua', 'zhuai', 'zhuan', 'zhuang', 'zhui', 'zhun', 'zhuo', 'zi', 'zong', 'zou', 'zu', 'zuan', 'zui', 'zun', 'zuo', '', 'ei', 'm', 'n', 'dia', 'cen', 'nou', 'jv', 'qv', 'xv', 'lv', 'nv' ); 有点长,发不了全部,一个单元。在这里:http://www.wesoho.com/article.asp?id=2070 日立硬盘商标被认定侵权 遭工商局没收扣押 新手提问:关于查询界面的问题! 急急急!!!哪位大哥有获取各种图象的基本信息的代码,主要是高度信息! 如何构建一个数据包,让服务器端认为数据包是从另外一个ip发出的,如何提交表单? 十分简单问题,这样把指针移到数据库的第一个记录,用TTable控件 在学习WIN2000中开发服务型的多层应用程序,执行中出现以下错误…… 如何锁定鼠标? 不知不觉,我也四颗了 祝福者有分! 求助:实现图形学里变换 Delphi是如何找到组件的属性并在"."之后自动弹出提示框呢?难道...... fastreport小数显示问题 如何在2个月内快速提高英语水平
不过我要用另一方法,利用系统输入法本身的反查功能,如果你的机上装上了全拼,试试以下程序unit getime;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,imm;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
//function ImmEscape(pt:HKL;na:pchar;e_name:integer;iname:pchar):integer;stdcall;external 'imm32.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
pt: array[0..20] of HKL;
iname :array [0..256] of char;
buff:TCandidateList;
s:string;
i,ct,ct1,dwg:integer;
p:pchar;
c:pchar;
begin
c:='好人'; //要查的字或词组,注意:不能查句子,要查句子,自己写一个循环函数吧
ct := GetKeyboardLayoutList(20,pt ); // ct = 机上输入法个数
ct1:=-1;
for i:=0 to ct do
begin
dwg:=ImmEscape(pt[i], 0, IME_ESC_IME_NAME,@iname[0] );
if dwg>0 then
if string(iname)='全拼' then
begin
ct1:=i;
break;
end;
end;
if ct1=-1 then
begin
ShowMessage('机上没安装全拼输入法,程序退出');
exit;
end;
ActivateKeyboardLayout(pt[ct1],0); // 切换到该输入法
dwg:=ImmGetConversionList(pt[i],0,c,nil,0,GCL_REVERSECONVERSION);
if (dwg<=0) then // 是否可反查
begin
ShowMessage('明的全拼找不到,程序退出');
end;
ImmGetConversionList(pt[i],0,c,@buff,dwg,GCL_REVERSECONVERSION);
p:=pchar(@buff);
inc(p,byte((p+24)^));
s:=p;
Memo1.Lines.add(s); // 结果在x中为:haoren
end;end.
X X X X X X X X X X X X X X X X
3 2 1
1: 0 - 只取各个汉字声母的第一个字母; 1 - 全取
2: 0 - 遇到不能翻译的字符不翻译; 1 - 翻译成 '?' (本选项目针对全角字符)
3: 0 - 生成的串不包括非数字, 字母的其他字符; 1 - 包括
(控制全角的要输出非数字, 字母字符的; 半角的非数字, 字母字符)
}
function MakeSpellCode(stText: string; iMode, iCount: Integer): string;
function GetSpellCode(szText: PChar; iMode, iCount: Integer): PChar; stdcall;implementationuses
SysUtils;type
{ 拼音代码表 }
TPYCode = record
PYCode: string[6];
end;
TFPYCodes = array [1..126, 1..191] of TPYCode;const
PYMUSICCOUNT = 405;
PyMusicCode: array [1..PYMUSICCOUNT] of string[6] = { 汉字基本发音表 } (
'a', 'ai', 'an', 'ang', 'ao', 'ba', 'bai', 'ban', 'bang', 'bao',
'bei', 'ben', 'beng', 'bi', 'bian', 'biao', 'bie', 'bin', 'bing', 'bo',
'bu', 'ca', 'cai', 'can', 'cang', 'cao', 'ce', 'ceng', 'cha', 'chai',
'chan', 'chang', 'chao', 'che', 'chen', 'cheng', 'chi', 'chong', 'chou', 'chu',
'chuai', 'chuan', 'chuang', 'chui', 'chun', 'chuo', 'ci', 'cong', 'cou', 'cu',
'cuan', 'cui', 'cun', 'cuo', 'da', 'dai', 'dan', 'dang', 'dao', 'de',
'deng', 'di', 'dian', 'diao', 'die', 'ding', 'diu', 'dong', 'dou', 'du',
'duan', 'dui', 'dun', 'duo', 'e', 'en', 'er', 'fa', 'fan', 'fang',
'fei', 'fen', 'feng', 'fu', 'fou', 'ga', 'gai', 'gan', 'gang', 'gao',
'ge', 'ji', 'gen', 'geng', 'gong', 'gou', 'gu', 'gua', 'guai', 'guan',
'guang', 'gui', 'gun', 'guo', 'ha', 'hai', 'han', 'hang', 'hao', 'he',
'hei', 'hen', 'heng', 'hong', 'hou', 'hu', 'hua', 'huai', 'huan', 'huang',
'hui', 'hun', 'huo', 'jia', 'jian', 'jiang', 'qiao', 'jiao', 'jie', 'jin',
'jing', 'jiong', 'jiu', 'ju', 'juan', 'jue', 'jun', 'ka', 'kai', 'kan',
'kang', 'kao', 'ke', 'ken', 'keng', 'kong', 'kou', 'ku', 'kua', 'kuai',
'kuan', 'kuang', 'kui', 'kun', 'kuo', 'la', 'lai', 'lan', 'lang', 'lao',
'le', 'lei', 'leng', 'li', 'lia', 'lian', 'liang', 'liao', 'lie', 'lin',
'ling', 'liu', 'long', 'lou', 'lu', 'luan', 'lue', 'lun', 'luo', 'ma',
'mai', 'man', 'mang', 'mao', 'me', 'mei', 'men', 'meng', 'mi', 'mian',
'miao', 'mie', 'min', 'ming', 'miu', 'mo', 'mou', 'mu', 'na', 'nai',
'nan', 'nang', 'nao', 'ne', 'nei', 'nen', 'neng', 'ni', 'nian', 'niang',
'niao', 'nie', 'nin', 'ning', 'niu', 'nong', 'nu', 'nuan', 'nue', 'yao',
'nuo', 'o', 'ou', 'pa', 'pai', 'pan', 'pang', 'pao', 'pei', 'pen',
'peng', 'pi', 'pian', 'piao', 'pie', 'pin', 'ping', 'po', 'pou', 'pu',
'qi', 'qia', 'qian', 'qiang', 'qie', 'qin', 'qing', 'qiong', 'qiu', 'qu',
'quan', 'que', 'qun', 'ran', 'rang', 'rao', 're', 'ren', 'reng', 'ri',
'rong', 'rou', 'ru', 'ruan', 'rui', 'run', 'ruo', 'sa', 'sai', 'san',
'sang', 'sao', 'se', 'sen', 'seng', 'sha', 'shai', 'shan', 'shang', 'shao',
'she', 'shen', 'sheng', 'shi', 'shou', 'shu', 'shua', 'shuai', 'shuan', 'shuang',
'shui', 'shun', 'shuo', 'si', 'song', 'sou', 'su', 'suan', 'sui', 'sun',
'suo', 'ta', 'tai', 'tan', 'tang', 'tao', 'te', 'teng', 'ti', 'tian',
'tiao', 'tie', 'ting', 'tong', 'tou', 'tu', 'tuan', 'tui', 'tun', 'tuo',
'wa', 'wai', 'wan', 'wang', 'wei', 'wen', 'weng', 'wo', 'wu', 'xi',
'xia', 'xian', 'xiang', 'xiao', 'xie', 'xin', 'xing', 'xiong', 'xiu', 'xu',
'xuan', 'xue', 'xun', 'ya', 'yan', 'yang', 'ye', 'yi', 'yin', 'ying',
'yo', 'yong', 'you', 'yu', 'yuan', 'yue', 'yun', 'za', 'zai', 'zan',
'zang', 'zao', 'ze', 'zei', 'zen', 'zeng', 'zha', 'zhai', 'zhan', 'zhang',
'zhao', 'zhe', 'zhen', 'zheng', 'zhi', 'zhong', 'zhou', 'zhu', 'zhua', 'zhuai',
'zhuan', 'zhuang', 'zhui', 'zhun', 'zhuo', 'zi', 'zong', 'zou', 'zu', 'zuan',
'zui', 'zun', 'zuo', '', 'ei', 'm', 'n', 'dia', 'cen', 'nou',
'jv', 'qv', 'xv', 'lv', 'nv'
);
http://www.wesoho.com/article.asp?id=2070