Delphi XE2下如何获取汉字拼音简码 Delphi XE2下如何获取汉字拼音简码,以前的代码不能用了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用sql server的排序规则,也可以取出简码。百度一下就可以了,比以前的代码要好。 DELPHI 2010下可以用,XE2应该也可以,没测试过,你试下:function CnPYIndex(const CnString: 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, l_iHz: Integer; Hz: AnsiString;begin i := 1; l_iHz := 1; while i <= Length(CnString) do begin Hz := CnString[i]; if (Hz[l_iHz] >= #160) and (Hz[l_iHz + 1] >= #160) then begin HzOrd := (Ord(Hz[l_iHz]) - 160) * 100 + Ord(Hz[l_iHz + 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);//改A为a就全部是小写 Break; end; end; end else Result := Result + CnString[i]; Inc(i); end;end; 写了个钩子,用的是记录钩子。但是在有的机器上会死机,非得按一下ctrl+alt+del才能恢复 非常奇怪的文件格式 请版主出马:QuickReport如何绘表格及双数据输出 在双方通过VOIP进行通话时,我如何播放一个语音文件,能让对方听到 多层开发如何从服务端断开某个用户的连接? excel表中的WorksSheets使用问题 消息问题 我的感情问题,大家来给点意见(严肃的) 一个简单的问题。关于图标如何包含到程序中。 gotobookmark? directshow手动连接dspack下AsyncEx Filter错误 请教关于dbplanner问题
{
返回中文的拼音首字母
}
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, l_iHz: Integer;
Hz: AnsiString;
begin
i := 1;
l_iHz := 1;
while i <= Length(CnString) do
begin
Hz := CnString[i];
if (Hz[l_iHz] >= #160) and (Hz[l_iHz + 1] >= #160) then
begin
HzOrd := (Ord(Hz[l_iHz]) - 160) * 100 + Ord(Hz[l_iHz + 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);//改A为a就全部是小写
Break;
end;
end;
end
else
Result := Result + CnString[i];
Inc(i);
end;
end;