Function GetPinyin_shoupinma2(hz: String): ansiChar;//获取生僻字首拼码
begin
case hz[1] of
'桉': Result := 'A';
'铵': Result := 'A';
'螯': Result := 'A';
'苄': Result := 'B';
'孢': Result := 'B';
......
end;
end;
begin
case hz[1] of
'桉': Result := 'A';
'铵': Result := 'A';
'螯': Result := 'A';
'苄': Result := 'B';
'孢': Result := 'B';
......
end;
end;
d7下汉字不能用作case的条件
begin
case hz[1] of
#26697: Result := 'A';
#38133: Result := 'A';
#34735: Result := 'A';
#33476: Result := 'B';
#23394: Result := 'B';
......
{这样可以不?}
end;
end;
procedure InitSPM();
begin
mSPM:=TStringList.Create;
mSPM.Add('桉=A');
mSPM.Add('铵=A');
mSPM.Add('苄=B');
end;
Function GetPinyin_shoupinma2(hz:String): ansiChar;//获取生僻字首拼码
var
lS:String;
begin
ls:=mSPM.Values[Copy(hz,1,2)];
if ls<>'' then
Result:=ls[1]
else
Result:=#0;
end;
{
返回中文的拼音首字母
}
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;
begin
i := 1;
while i <= Length(CnString) do
begin
if (CnString[i] >= #160) and (CnString[i + 1] >= #160) then
begin
HzOrd := (Ord(CnString[i]) - 160) * 100 + Ord(CnString[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 + CnString[i];
Inc(i);
end;
end;