吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3742|回复: 63

[Delphi] 返回中文的拼音首字母

  [复制链接]
CuiCuiTaGE 发表于 2019-12-3 10:42 | 显示全部楼层 |阅读模式

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}
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;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage(CnPYIndex(Edit1.Text));
end;

end.

评分

参与人数 7HB +2 THX +5 收起 理由
消逝的过去 + 1
创客者V2.0 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
风里去 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
agan8888 + 1
DeeDarrick + 1
playboy + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
diyikuai 发表于 2019-12-3 23:53 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
xcrane 发表于 2020-4-12 16:17 | 显示全部楼层

测试了一下,这个里面的汉字是不全的。
比如:"蓓" 这个字,就找不到他对应的拼音。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
LQpJlqFNXxE 发表于 2022-2-23 01:56 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Ail9274 发表于 2022-2-23 02:18 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fFEH0 发表于 2022-2-28 13:08 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
UpjaxeJ67380 发表于 2022-2-28 22:42 | 显示全部楼层

被标题吸引进来了,回复看看
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
IPGVh84539 发表于 2022-3-1 20:05 | 显示全部楼层

学习永不停歇
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
KUp9281 发表于 2022-4-13 23:44 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
UmVDK 发表于 2022-4-23 08:50 | 显示全部楼层

甘拜下风,谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表