function GetPyChar(const HZ: AnsiString): string; const HZCode: 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(HZ) do begin if (HZ[i] >= #160) and (HZ[i + 1] >= #160) then begin HzOrd := (Ord(HZ[i]) – 160) * 100 + Ord(HZ[i + 1]) – 160; for j := 0 to 25 do begin if (HzOrd >= HZCode[j][0]) and (HzOrd <= HZCode[j][1]) then begin Result := Result + Char(Byte(‘A’) + j); Break; end; end; Inc(i); end else Result := Result + HZ[i]; Inc(i); end; end; //测试: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetPyChar(‘龙在天)); //结果: end; //只单独汉字: function GetPyFitstChar(HZ: AnsiString): Char; begin case LoWord(HZ[1]) shl 8 + LoWord(HZ[2]) of $B0A1..$B0C4: Result := ‘A’; $B0C5..$B2C0: Result := ‘B’; $B2C1..$B4ED: Result := ‘C’; $B4EE..$B6E9: Result := ‘D’; $B6EA..$B7A1: Result := ‘E’; $B7A2..$B8C0: Result := ‘F’; $B8C1..$B9FD: Result := ‘G’; $B9FE..$BBF6: Result := ‘H’; $BBF7..$BFA5: Result := ‘J’; $BFA6..$C0AB: Result := ‘K’; $C0AC..$C2E7: Result := ‘L’; $C2E8..$C4C2: Result := ‘M’; $C4C3..$C5B5: Result := ‘N’; $C5B6..$C5BD: Result := ‘O’; $C5BE..$C6D9: Result := ‘P’; $C6DA..$C8BA: Result := ‘Q’; $C8BB..$C8F5: Result := ‘R’; $C8F6..$CBF9: Result := ‘S’; $CBFA..$CDD9: Result := ‘T’; $CDDA..$CEF3: Result := ‘W’; $CEF4..$D188: Result := ‘X’; $D1B9..$D4D0: Result := ‘Y’; $D4D1..$D7F9: Result := ‘Z’; else Result := Char(0); end; end; //测试: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetPyFitstChar’龙在天‘)); //结果:L end;