蔡进炮和杜文杰:delphi获取汉字拼音首字母

来源:百度文库 编辑:中财网 时间:2024/05/03 19:18:56

delphi获取汉字拼音首字母

分类: Delphi 2009-08-01 20:59 653人阅读 评论(1) 收藏 举报

[delphi] view plaincopy?

  1. unit Unit1;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, StdCtrls;  
  8.   
  9. type  
  10.   TForm1 = class(TForm)  
  11.     Edit1: TEdit;  
  12.     Edit2: TEdit;  
  13.     procedure Edit1Change(Sender: TObject);  
  14.   private  
  15.     { Private declarations }  
  16.   public  
  17.     { Public declarations }  
  18.   end;  
  19.   
  20. var  
  21.   Form1: TForm1;  
  22.   
  23. implementation  
  24.   
  25. {$R *.dfm}  
  26. const py: array[216..247] of string = (  
  27. {216}'CJWGNSPGCGNESYPB' + 'TYYZDXYKYGTDJNMJ' + 'QMBSGZSCYJSYYZPG' +  
  28. {216}'KBZGYCYWYKGKLJSW' + 'KPJQHYZWDDZLSGMR' + 'YPYWWCCKZNKYDG',  
  29. {217}'TTNJJEYKKZYTCJNM' + 'CYLQLYPYQFQRPZSL' + 'WBTGKJFYXJWZLTBN' +  
  30. {217}'CXJJJJZXDTTSQZYC' + 'DXXHGCKBPHFFSSYY' + 'BGMXLPBYLLLHLX',  
  31. {218}'SPZMYJHSOJNGHDZQ' + 'YKLGJHXGQZHXQGKE' + 'ZZWYSCSCJXYEYXAD' +  
  32. {218}'ZPMDSSMZJZQJYZCD' + 'JEWQJBDZBXGZNZCP' + 'WHKXHQKMWFBPBY',  
  33. {219}'DTJZZKQHYLYGXFPT' + 'YJYYZPSZLFCHMQSH' + 'GMXXSXJJSDCSBBQB' +  
  34. {219}'EFSJYHXWGZKPYLQB' + 'GLDLCCTNMAYDDKSS' + 'NGYCSGXLYZAYBN',  
  35. {220}'PTSDKDYLHGYMYLCX' + 'PYCJNDQJWXQXFYYF' + 'JLEJBZRXCCQWQQSB' +  
  36. {220}'ZKYMGPLBMJRQCFLN' + 'YMYQMSQYRBCJTHZT' + 'QFRXQHXMJJCJLX',  
  37. {221}'QGJMSHZKBSWYEMYL' + 'TXFSYDSGLYCJQXSJ' + 'NQBSCTYHBFTDCYZD' +  
  38. {221}'JWYGHQFRXWCKQKXE' + 'BPTLPXJZSRMEBWHJ' + 'LBJSLYYSMDXLCL',  
  39. {222}'QKXLHXJRZJMFQHXH' + 'WYWSBHTRXXGLHQHF' + 'NMCYKLDYXZPWLGGS' +  
  40. {222}'MTCFPAJJZYLJTYAN' + 'JGBJPLQGDZYQYAXB' + 'KYSECJSZNSLYZH',  
  41. {223}'ZXLZCGHPXZHZNYTD' + 'SBCJKDLZAYFMYDLE' + 'BBGQYZKXGLDNDNYS' +  
  42. {223}'KJSHDLYXBCGHXYPK' + 'DQMMZNGMMCLGWZSZ' + 'XZJFZNMLZZTHCS',  
  43. {224}'YDBDLLSCDDNLKJYK' + 'JSYCJLKOHQASDKNH' + 'CSGANHDAASHTCPLC' +  
  44. {224}'PQYBSDMPJLPCJOQL' + 'CDHJJYSPRCHNKNNL' + 'HLYYQYHWZPTCZG',  
  45. {225}'WWMZFFJQQQQYXACL' + 'BHKDJXDGMMYDJXZL' + 'LSYGXGKJRYWZWYCL' +  
  46. {225}'ZMSSJZLDBYDCPCXY' + 'HLXCHYZJQSQQAGMN' + 'YXPFRKSSBJLYXY',  
  47. {226}'SYGLNSCMHCWWMNZJ' + 'JLXXHCHSYD CTXRY' + 'CYXBYHCSMXJSZNPW' +  
  48. {226}'GPXXTAYBGAJCXLYS' + 'DCCWZOCWKCCSBNHC' + 'PDYZNFCYYTYCKX',  
  49. {227}'KYBSQKKYTQQXFCWC' + 'HCYKELZQBSQYJQCC' + 'LMTHSYWHMKTLKJLY' +  
  50. {227}'CXWHEQQHTQHZPQSQ' + 'SCFYMMDMGBWHWLGS' + 'LLYSDLMLXPTHMJ',  
  51. {228}'HWLJZYHZJXHTXJLH' + 'XRSWLWZJCBXMHZQX' + 'SDZPMGFCSGLSXYMJ' +  
  52. {228}'SHXPJXWMYQKSMYPL' + 'RTHBXFTPMHYXLCHL' + 'HLZYLXGSSSSTCL',  
  53. {229}'SLDCLRPBHZHXYYFH' + 'BBGDMYCNQQWLQHJJ' + 'ZYWJZYEJJDHPBLQX' +  
  54. {229}'TQKWHLCHQXAGTLXL' + 'JXMSLXHTZKZJECXJ' + 'CJNMFBYCSFYWYB',  
  55. {230}'JZGNYSDZSQYRSLJP' + 'CLPWXSDWEJBJCBCN' + 'AYTWGMPABCLYQPCL' +  
  56. {230}'ZXSBNMSGGFNZJJBZ' + 'SFZYNDXHPLQKZCZW' + 'ALSBCCJXJYZHWK',  
  57. {231}'YPSGXFZFCDKHJGXD' + 'LQFSGDSLQWZKXTMH' + 'SBGZMJZRGLYJBPML' +  
  58. {231}'MSXLZJQQHZSJCZYD' + 'JWBMJKLDDPMJEGXY' + 'HYLXHLQYQHKYCW',  
  59. {232}'CJMYYXNATJHYCCXZ' + 'PCQLBZWWYTWBQCML' + 'PMYRJCCCXFPZNZZL' +  
  60. {232}'JPLXXYZTZLGDLDCK' + 'LYRLZGQTGJHHGJLJ' + 'AXFGFJZSLCFDQZ',  
  61. {233}'LCLGJDJCSNCLLJPJ' + 'QDCCLCJXMYZFTSXG' + 'CGSBRZXJQQCTZHGY' +  
  62. {233}'QTJQQLZXJYLYLBCY' + 'AMCSTYLPDJBYREGK' + 'JZYZHLYSZQLZNW',  
  63. {234}'CZCLLWJQJJJKDGJZ' + 'OLBBZPPGLGHTGZXY' + 'GHZMYCNQSYCYHBHG' +  
  64. {234}'XKAMTXYXNBSKYZZG' + 'JZLQJDFCJXDYGJQJ' + 'JPMGWGJJJPKQSB',  
  65. {235}'GBMMCJSSCLPQPDXC' + 'DYYKYWCJDDYYGYWR' + 'HJRTGZNYQLDKLJSZ' +  
  66. {235}'ZGZQZJGDYKSHPZMT' + 'LCPWNJAFYZDJCNMW' + 'ESCYGLBTZCGMSS',  
  67. {236}'LLYXQSXSBSJSBBGG' + 'GHFJLYPMZJNLYYWD' + 'QSHZXTYYWHMCYHYW' +  
  68. {236}'DBXBTLMSYYYFSXJC' + 'SDXXLHJHF SXZQHF' + 'ZMZCZTQCXZXRTT',  
  69. {237}'DJHNNYZQQMNQDMMG' + 'LYDXMJGDHCDYZBFF' + 'ALLZTDLTFXMXQZDN' +  
  70. {237}'GWQDBDCZJDXBZGSQ' + 'QDDJCMBKZFFXMKDM' + 'DSYYSZCMLJDSYN',  
  71. {238}'SPRSKMKMPCKLGDBQ' + 'TFZSWTFGGLYPLLJZ' + 'HGJJGYPZLTCSMCNB' +  
  72. {238}'TJBQFKTHBYZGKPBB' + 'YMTDSSXTBNPDKLEY' + 'CJNYCDYKZDDHQH',  
  73. {239}'SDZSCTARLLTKZLGE' + 'CLLKJLQJAQNBDKKG' + 'HPJTZQKSECSHALQF' +  
  74. {239}'MMGJNLYJBBTMLYZX' + 'DCJPLDLPCQDHZYCB' + 'ZSCZBZMSLJFLKR',  
  75. {240}'ZJSNFRGJHXPDHYJY' + 'BZGDLJCSEZGXLBLH' + 'YXTWMABCHECMWYJY' +  
  76. {240}'ZLLJJYHLGBDJLSLY' + 'GKDZPZXJYYZLWCXS' + 'ZFGWYYDLYHCLJS',  
  77. {241}'CMBJHBLYZLYCBLYD' + 'PDQYSXQZBYTDKYYJ' + 'YYCNRJMPDJGKLCLJ' +  
  78. {241}'BCTBJDDBBLBLCZQR' + 'PPXJCGLZCSHLTOLJ' + 'NMDDDLNGKAQHQH',  
  79. {242}'JHYKHEZNMSHRP QQ' + 'JCHGMFPRXHJGDYCH' + 'GHLYRZQLCYQJNZSQ' +  
  80. {242}'TKQJYMSZSWLCFQQQ' + 'XYFGGYPTQWLMCRNF' + 'KKFSYYLQBMQAMM',  
  81. {243}'MYXCTPSHCPTXXZZS' + 'MPHPSHMCLMLDQFYQ' + 'XSZYJDJJZZHQPDSZ' +  
  82. {243}'GLSTJBCKBXYQZJSG' + 'PSXQZQZRQTBDKYXZ' + 'KHHGFLBCSMDLDG',  
  83. {244}'DZDBLZYYCXNNCSYB' + 'ZBFGLZZXSWMSCCMQ' + 'NJQSBDQSJTXXMBLT' +  
  84. {244}'XZCLZSHZCXRQJGJY' + 'LXZFJPHYXZQQYDFQ' + 'JJLZZNZJCDGZYG',  
  85. {245}'CTXMZYSCTLKPHTXH' + 'TLBJXJLXSCDQXCBB' + 'TJFQZFSLTJBTKQBX' +  
  86. {245}'XJJLJCHCZDBZJDCZ' + 'JDCPRNPQCJPFCZLC' + 'LZXBDMXMPHJSGZ',  
  87. {246}'GSZZQLYLWTJPFSYA' + 'SMCJBTZYYCWMYTCS' + 'JJLQCQLWZMALBXYF' +  
  88. {246}'BPNLSFHTGJWEJJXX' + 'GLLJSTGSHJQLZFKC' + 'GNNDSZFDEQFHBS',  
  89. {247}'AQTGYLBXMMYGSZLD' + 'YDQMJJRGBJTKGDHG' + 'KBLQKBDMBYLXWCXY' +  
  90. {247}'TTYBKMRTJZXQJBHL' + 'MHMJJZMQASLDCYXY' + 'QDLQCAFYWYXQHZ'  
  91.     );  
  92.   
  93. function ChnPy(Value: array of char): Char;  
  94. begin  
  95.   Result := #0;  
  96.   case Byte(Value[0]) of  
  97.     176:  
  98.       case Byte(Value[1]) of  
  99.         161..196: Result := 'A';  
  100.         197..254: Result := 'B';  
  101.       end; {case}  
  102.     177:  
  103.       Result := 'B';  
  104.     178:  
  105.       case Byte(Value[1]) of  
  106.         161..192: Result := 'B';  
  107.         193..205: Result := 'C';  
  108.         206: Result := 'S'; //参   
  109.         207..254: Result := 'C';  
  110.       end; {case}  
  111.     179:  
  112.       Result := 'C';  
  113.     180:  
  114.       case Byte(Value[1]) of  
  115.         161..237: Result := 'C';  
  116.         238..254: Result := 'D';  
  117.       end; {case}  
  118.     181:  
  119.       Result := 'D';  
  120.     182:  
  121.       case Byte(Value[1]) of  
  122.         161..233: Result := 'D';  
  123.         234..254: Result := 'E';  
  124.       end; {case}  
  125.     183:  
  126.       case Byte(Value[1]) of  
  127.         161: Result := 'E';  
  128.         162..254: Result := 'F';  
  129.       end; {case}  
  130.     184:  
  131.       case Byte(Value[1]) of  
  132.         161..192: Result := 'F';  
  133.         193..254: Result := 'G';  
  134.       end; {case}  
  135.     185:  
  136.       case Byte(Value[1]) of  
  137.         161..253: Result := 'G';  
  138.         254: Result := 'H';  
  139.       end; {case}  
  140.     186:  
  141.       Result := 'H';  
  142.     187:  
  143.       case Byte(Value[1]) of  
  144.         161..246: Result := 'H';  
  145.         247..254: Result := 'J';  
  146.       end; {case}  
  147.     188..190:  
  148.       Result := 'J';  
  149.     191:  
  150.       case Byte(Value[1]) of  
  151.         161..165: Result := 'J';  
  152.         166..254: Result := 'K';  
  153.       end; {case}  
  154.     192:  
  155.       case Byte(Value[1]) of  
  156.         161..171: Result := 'K';  
  157.         172..254: Result := 'L';  
  158.       end; {case}  
  159.     193:  
  160.       Result := 'L';  
  161.     194:  
  162.       case Byte(Value[1]) of  
  163.         161..231: Result := 'L';  
  164.         232..254: Result := 'M';  
  165.       end; {case}  
  166.     195:  
  167.       Result := 'M';  
  168.     196:  
  169.       case Byte(Value[1]) of  
  170.         161..194: Result := 'M';  
  171.         195..254: Result := 'N';  
  172.       end; {case}  
  173.     197:  
  174.       case Byte(Value[1]) of  
  175.         161..181: Result := 'N';  
  176.         182..189: Result := 'O';  
  177.         190..254: Result := 'P';  
  178.       end; {case}  
  179.     198:  
  180.       case Byte(Value[1]) of  
  181.         161..217: Result := 'P';  
  182.         218..254: Result := 'Q';  
  183.       end; {case}  
  184.     199:  
  185.       Result := 'Q';  
  186.     200:  
  187.       case Byte(Value[1]) of  
  188.         161..186: Result := 'Q';  
  189.         187..245: Result := 'R';  
  190.         246..254: Result := 'S';  
  191.       end; {case}  
  192.     201..202:  
  193.       Result := 'S';  
  194.     203:  
  195.       case Byte(Value[1]) of  
  196.         161..249: Result := 'S';  
  197.         250..254: Result := 'T';  
  198.       end; {case}  
  199.     204:  
  200.       Result := 'T';  
  201.     205:  
  202.       case Byte(Value[1]) of  
  203.         161..217: Result := 'T';  
  204.         218..254: Result := 'W';  
  205.       end; {case}  
  206.     206:  
  207.       case Byte(Value[1]) of  
  208.         161..243: Result := 'W';  
  209.         244..254: Result := 'X';  
  210.       end; {case}  
  211.     207..208:  
  212.       Result := 'X';  
  213.     209:  
  214.       case Byte(Value[1]) of  
  215.         161..184: Result := 'X';  
  216.         185..254: Result := 'Y';  
  217.       end; {case}  
  218.     210..211:  
  219.       Result := 'Y';  
  220.     212:  
  221.       case Byte(Value[1]) of  
  222.         161..208: Result := 'Y';  
  223.         209..254: Result := 'Z';  
  224.       end; {case}  
  225.     213..215:  
  226.       Result := 'Z';  
  227.     216..247:  
  228.       Result := py[Byte(Value[0])][Byte(Value[1]) - 160];  
  229.   end; {case}  
  230. end;  
  231.   
  232. function ChnToPY(Value: string): string;  
  233. var  
  234.   I, L: Integer;  
  235.   C: array[0..1] of char;  
  236.   R: Char;  
  237. begin  
  238.   Result := '';  
  239.   L := Length(Value);  
  240.   I := 1;  
  241.   while I <= (L - 1) do  
  242.   begin  
  243.     if Value[I] < #160 then  
  244.     begin  
  245.       Result := Result + Value[I];  
  246.       Inc(I);  
  247.     end  
  248.     else  
  249.     begin  
  250.       C[0] := Value[I];  
  251.       C[1] := Value[I + 1];  
  252.       R := ChnPY(C);  
  253.       if r <> #0 then  
  254.         Result := Result + R;  
  255.       Inc(I, 2);  
  256.     end;  
  257.   end;  
  258.   if I = L then  
  259.     Result := Result + Value[L];  
  260. end;  
  261.   
  262. procedure TForm1.Edit1Change(Sender: TObject);  
  263. begin  
  264.   edit2.Text := ChnToPY(trim(edit1.Text));  
  265. end;  
  266.   
  267. end.