2005/10/09 | 由汉字得到拼音首字母
类别(语言类学习笔记) | 评论(0) | 阅读(93) | 发表于 22:20
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Edit3Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$ R *.dfm}


function GetPyChar(strChinese: string; bUpCase: Boolean = True): char;

begin

case WORD(strChinese[1]) shl 8 + WORD(strChinese[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;

if not bUpCase then
begin
result := Chr(Ord(result) + 32);
end;
end;

function GetPYStr(strChinese: string; bUpCase: Boolean = True): string;
var
strChineseTemp: string;
cTemp: Char;
begin
result := '';
strChineseTemp := strChinese;
while strChineseTemp <> '' do
begin
cTemp := GetPYChar(strChineseTemp);
if not bUpCase then
begin
cTemp := Chr(Ord(cTemp) + 32);
end;
result := result + string(cTemp);
strChineseTemp := Copy(strChineseTemp, 3, Length(strChineseTemp));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked then Edit2.Text := GetPYChar(Edit1.Text);
if RadioButton2.Checked then Edit2.Text := GetPYStr(Edit1.Text);
end;



procedure TForm1.Edit3Change(Sender: TObject);
begin
self.Edit3.CharCase:=ecUpperCase;
end;

end.
0

评论Comments