关于汉字生成拼音的的函数 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiAPI/html/delphi_20061114182436234.html
怎么把一个调用一个函数就能把一个汉字生成拼音
比如输入"青霉素"生成"qms"
知道的请告诉我一下,谢了!
来自超级猛料的函数:
function GetHzPy(const AHzStr: string): string;
const
ChinaCode: array[0..25, 0..1] of Integer = ((1601, 1636), (1637, 1832), (1833, 2077),
(2078, 2273), (2274, 2301), (2302, 2432), (2433, 2593), (2594, 2786), (9999, 0000),
(2787, 3105), (3106, 3211), (3212, 3471), (3472, 3634), (3635, 3722), (3723, 3729),
(3730, 3857), (3858, 4026), (4027, 4085), (4086, 4389), (4390, 4557), (9999, 0000),
(9999, 0000), (4558, 4683), (4684, 4924), (4925, 5248), (5249, 5589));
var
i, j, HzOrd: integer;
Hz: string[2];
begin
i := 1;
while i <= Length(AHzStr) do
begin
if (AHzStr[i] >= #160) and (AHzStr[i + 1] >= #160) then
begin
HzOrd := (Ord(AHzStr[i]) - 160) * 100 + Ord(AHzStr[i + 1]) - 160;
for j := 0 to 25 do
begin
if (HzOrd >= ChinaCode[j][0]) and (HzOrd <= ChinaCode[j][1]) then
begin
Result := Result + char(byte('A') + j);
break;
end;
end;
Inc(i);
end else Result := Result + AHzStr[i];
Inc(i);
end;
Result := LowerCase(Result);//转为小写
end;
调用方法:
Edit1.Text := GetHzPy('青霉素');
showmessage(Edit1.Text);
mark
想请问下这个函数能处理多音字的情况吗?是不是还是基于GB2312而已?
多音字这个函数就无能为力了!看来得从新写,将多音字都挑出来单独处理了!
如果不是基于GB2312的,内码转换吧!
http://www.dullwolf.cn/
去下载汉字转换拼音程序,代码公开的,可以转换成任何程序语言,英文操作系统下好使.
qù xià zǎi hàn zì zhuǎn huàn pīn yīn chéng xù , dài mǎ gōng kāi de , kě yǐ zhuǎn huàn chéng rèn hé chéng xù yǔ yán , yīng wén
cāo zuò xì tǒng xià hǎo shǐ .
支持大部分多音字
zhī chí dà bù fēn duō yīn zì
很长 长远 长久
hěn cháng cháng yuǎn cháng jiǔ
生长 成长
shēng zhǎng chéng zhǎng
zhù fú suǒ yǒu xiōng di jiě mèi , xīn de yī nián , yǒu gèng duō shōu huò
祝福所有兄弟姐妹,新的一年,有更多收获
cún zài wèn tí : -------- hào hē jiǔ 。
存在问题:--------好喝酒。
fēn xī yuán yīn : -------- jiǔ hǎo hē 。
分析原因:--------酒好喝。
zǒng jié jīng yàn : -------- hē jiǔ hǎo 。
总结经验:--------喝酒好。
zhěng gǎi cuò shī : -------- jiǔ hē hǎo 。
整改措施:--------酒喝好。
nǔ lì fāng xiàng : -------- hē hǎo jiǔ 。
努力方向:--------喝好酒。