取汉字首拼音

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
function GetHZPY(const AHzStr: string):string;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1; 
implementation 
{$R *.dfm} 
 
function TForm1.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;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin 
edit2.Text:=GetHZPY(edit1.Text);
end;
end.

posted on 2009-09-08 23:32  舟山牙医  阅读(316)  评论(0编辑  收藏  举报

导航