function tform1.GetPYIndexChar(const sScrStr: string): string; var iCount: integer; sHz, sPYM: string; begin iCount := 1; while iCount <= length(sScrStr) do begin sHz := COPY(sScrStr, iCount, 2); case WORD(sHz[1]) shl 8 + WORD(sHz[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..$D1B8: result := 'X'; $D1B9..$D4D0: result := 'Y'; $D4D1..$D7F9: result := 'Z'; else result := ''; end; if Result = '' then begin sPYM := sPYM + COPY(sScrStr, iCount, 1); iCount := iCount + 1; end else begin sPYM := sPYM + Result; iCount := iCount + 2; end; Result := sPYM; end; //end While end;procedure TForm1.Edit1Exit(Sender: TObject); begin Edit2.text := GetPYIndexChar(Edit1.Text); end;
有位同仁写了一个DLL文件。你可以找看看。叫QueryPY.dll
轉貼 ///取的漢字的拼音的首字母 function 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; 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;
我的函数能处理常用汉字和非常用汉字 function get_pym(hzstr:string):string; //传入参数为:hzstr 类型:string (即汉字串) var realstr,pym,pym1:string; ch1,ch2:char; val,xp:integer; begin //去掉空串 realstr:=trim(hzstr); pym:=''; xp:=1; while xp<=length(realstr) do begin ch1:=copy(realstr,xp,1)[1]; if (xp=length(realstr)) or (ord(ch1)<128) then pym1:=''+ch1 else begin ch2:=copy(realstr,xp+1,1)[1]; pym1:=' '; val:=(ord(ch1) - 176)*94+(ord(ch2) - 160); if ord(ch1)<128 then pym1:=''+ch1 // 80 else if ord(ch1)<176 then pym1:=' ' // A1 else case ord(ch1) of 216:pym1:=copy('CJWGNSPGCGNENYPBTY ZDXYKYGTDJNNJQMBSGZ CYJSYYQPGKBZGY YWJKGKLJYWKPJQHY W D LSGMRYPYWWCCKZNKYDG',ord(ch2) - 160,1); 217:pym1:=copy('TTNGJEYKK YT JNM YLQLYPYSFQRP L BTGKJFYXJWZLTBN X JJJ XDTT QZYCDXXHG K PHFFSS YBGMXLPBYLL HLX',ord(ch2) - 160,1); 218:pym1:=copy('S M JH OJNGHD QYKLGJH GQ HXQGKEZ WY S JXYEYXADZPMDS M JZQJY J WQJBDZBXG NZ PWHKXHQKMWFBPBY',ord(ch2) - 160,1); 219:pym1:=copy('DTJ KQHYLYGXFPTYJYY P ZLF HMQ HGMXXSXJ D SBBQBEF JYHWWG KPYLQBGLDL DTNMAYDDK NGYC GXLY AYBN',ord(ch2) - 160,1); 220:pym1:=copy('PTSDKDYLHGYMYL XPY JNDQJWXQXFYYFJLEQB RX CQWQQ BNKYMGPLBMJRQ FLNYMYQMTQTRBCJTH TQFRXQHXMJJ LX',ord(ch2) - 160,1); 221:pym1:=copy('QGJMSH KB WYEMYLTXFSYD GL JQ SJNQB TYHBFTDCYZDJWY HQFRXW KQKXE PTLPXJ RMEBWHJLBJ LYYSMDXLCL',ord(ch2) - 160,1); 222:pym1:=copy('QKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNMNYKLDYXZPYLGG MT FPAJJZYLJTYA JGBJPLQGD YQYAXBKY E J NSLY H',ord(ch2) - 160,1); 223:pym1:=copy(' XLZCGHPX H NYTD B JKDL AYFMYDLEBBGQYZKXGLDNDNYSKJ HDLYXBCGHXYPKDJMM NGMM LGW SZXZJFZNML THC ',ord(ch2) - 160,1); 224:pym1:=copy('YDBDLL DDNLKJYKJSY JLKWHQASDKNH SGANHDAASHT PLCPQYBSDMPJLPZJOQLCDHJJYSPRCHNWJNLHLYYQYHW PTDZG',ord(ch2) - 160,1); 225:pym1:=copy('WWM FFJQQQQYXACLBHKDJXDGMMYDJX LLSYGXGKJRYWZWYCLZM SJ LDBYD FCXYHL HY JQ QAGMNYXPFRK SBJLYXY',ord(ch2) - 160,1); 226:pym1:=copy('SYGLN CMH WWMN JJLXXH HSY TT RY YXBYH SMXJS NPWGPXXTAYBGAJ XLY DC W O WK SBNH PDYZNF YYTYCKX',ord(ch2) - 160,1); 227:pym1:=copy('KYBSQKKYTQQXF W HCYKEL QBSQYJQ LMTH WHMKTLKJLY WHEQQHTQH PQ QS FY MDMGBWHWLG LLYSDLMLXPTHMJ',ord(ch2) - 160,1); 228:pym1:=copy('HWLJ YH JXHTX LHXRSWLW JCBXMH QXSD PMGFC GL XYMJSHXPJXWMYQK MYPLRTHB FTPMHYXLCHLHL YLXG S T L',ord(ch2) - 160,1); 229:pym1:=copy('SLD LRPBH HXYYFHB GDMY NQQWL HJJ YWJZYEJJDHPBLQXTQKWHL HQXAGTLXLJXMSLXHT K JEC J JNMFBY F WYB',ord(ch2) - 160,1); 230:pym1:=copy('JZGNYSD QYR LJP LPWXSDWEJBJ B NAYTWGMPAP LYQP L X BNM GGFNZJJ ZSFZYNDXHPLQK C WAL BC JX Y GWK',ord(ch2) - 160,1); 231:pym1:=copy('YP GXF F DKH GXDLQF GD LQWZKXTMHSBG MJ RGLYJBPMLMSXLZ QQH YJ ZYDJWBMJKLDDPMJEGXYHYL HLQYQHKYCW',ord(ch2) - 160,1); 232:pym1:=copy(' JMYYXNATJHYCCX PCQLBZWWYTWBQ MLPMYRJ CXFP N LJPLXXY T LGDLT KLYR GQTGJHHGJLJAXFGFJZSL FDQ ',ord(ch2) - 160,1); 233:pym1:=copy('L LGJDJC N LLJPJQD L JXMY FTSXGCG BR XJQQ T HGYQTJQQLZXJYLYLB YAMC TYLPDJBYRE KL Y HLY QL NW',ord(ch2) - 160,1); 234:pym1:=copy(' ZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMY NQ Y YHBHGXKAMTXYXNB KY ZGJ LQJDF JXDYGJQJ PMG GJJJPKQSB',ord(ch2) - 160,1); 235:pym1:=copy('GBMMCJS LPQPDX DYYKY JDDYYGYWRHJRTG NYQLDKLJ ZG Q JGDYKSHP MTLCPWNJYFYZDJCNMWE YGLBT GMS ',ord(ch2) - 160,1); 236:pym1:=copy('LLYXQ XXBSJSBB GGHFJLWPM JNLYYWDQ H XTYYWHM YHYWD XBTLM YYYFSXJC TX LHJHF SX QHFZM C TQ RTT',ord(ch2) - 160,1); 237:pym1:=copy('DJHNNYZQQMNQDMMG YDXMJGDH DY BFFALLLTD TFXMXQ DNGWQDBD JDXB GSQQDD CMBK FFXMKDM YYSZ MLJDSYN',ord(ch2) - 160,1); 238:pym1:=copy('SPRSKMKMP KL DBQTF WTFGGLYPLLJZHGJ GYP LT M NBTJBQFKTHBY GKPBBYMTD XTBNPDKLEY JNYDDYK DDHQH',ord(ch2) - 160,1); 239:pym1:=copy(' D S TARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSE SHALQFMMGJNLYJBBTMLYZXDXJPLDLPCQDH Y B C BZM LJFLKR',ord(ch2) - 160,1); 240:pym1:=copy(' JSNFRGJHXPDHYJY DLQ SE GXLBLGYXTWMAB HECMWYJY LLJJYHLGBDJL LYGKD P XJYY LWCX FGWYYDLYHCLJS',ord(ch2) - 160,1); 241:pym1:=copy(' MBJHBLY LY BLYDPDQYSXQ BYTDKYXJY NRJMPDJGKL LJB TBJDDB LBL QRPYXJCJLZ SHLTOL NMDDDLNGKAQHQH',ord(ch2) - 160,1); 242:pym1:=copy('JHYKHE NMSHRP QQJ HGMFPRXHJGDY HGHLYR QL YQJN SQTKQJYM XWL FQQQXYFGGYPTQWLM RNFKKFSYYLQBMQAMM',ord(ch2) - 160,1); 243:pym1:=copy('MYX TP HCPTXX MPHP HM LMLDQFYQX YJDJJ ZHQPD ZGLSTJB KBXYQ J GP XQ Q RQTBDKYX KHHGFLB SMDLDG',ord(ch2) - 160,1); 244:pym1:=copy('DZDBL YY NN YB B GL ZX WM C MQNJQ BDQSJTXXMBLTXZCLZSHZCXRQ GJYLX FJPHYM QQYDFQJQLZZN DG Y ',ord(ch2) - 160,1); 245:pym1:=copy('CTXM Y TLKPHTXHTLBJXJLX CDQXCBBTJFQ F LTJBTKQBXXJJLJ H DB JD JDCPRNPQ JPFC L L X DMXMPHJ Z',ord(ch2) - 160,1); 246:pym1:=copy('GS ZQLYLWTJPF YAXM J TZYY WMYTCSJJLJ QLWZMALBXYFBPNLSFHTGJWEJJXXGLLJETG HJQLZFK GNND ZFD QFHBS',ord(ch2) - 160,1); 247:pym1:=copy('AQTGYLBXMMYG ZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXW XYTTYBKMRTJZXQJBHLMHMJQ MQA LD YXYQDLQCAFYWYXQH ',ord(ch2) - 160,1); else ; end; if val < 37 then pym1:='A' else if val < (2*94+33) then pym1:='B' else if val < (4*94+78) then pym1:='C' else if val < (6*94+74) then pym1:='D' else if val < (7*94+2) then pym1:='E' else if val < (8*94+33) then pym1:='F' else if val < (9*94+94) then pym1:='G' else if val < (11*94+87) then pym1:='H' else if val < (15*94+6) then pym1:='J' else if val < (16*94+12) then pym1:='K' else if val < (18*94+72) then pym1:='L' else if val < (20*94+35) then pym1:='M' else if val < (21*94+22) then pym1:='N' else if val < (21*94+30) then pym1:='O' else if val < (22*94+58) then pym1:='P' else if val < (24*94+27) then pym1:='Q' else if val < (24*94+86) then pym1:='R' else if val < (27*94+90) then pym1:='S' else if val < (29*94+58) then pym1:='T' else if val < (30*94+84) then pym1:='W' else if val < (33*94+25) then pym1:='X' else if val < (36*94+49) then pym1:='Y' else if val < (39*94+90) then pym1:='Z'; end; pym := pym+pym1; if ord(ch1)<128 then xp:=xp+1 else xp:=xp+2; end; // end of while do result:=pym; end;
var
iCount: integer;
sHz, sPYM: string;
begin
iCount := 1;
while iCount <= length(sScrStr) do
begin
sHz := COPY(sScrStr, iCount, 2);
case WORD(sHz[1]) shl 8 + WORD(sHz[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..$D1B8: result := 'X';
$D1B9..$D4D0: result := 'Y';
$D4D1..$D7F9: result := 'Z';
else
result := '';
end;
if Result = '' then
begin
sPYM := sPYM + COPY(sScrStr, iCount, 1);
iCount := iCount + 1;
end
else
begin
sPYM := sPYM + Result;
iCount := iCount + 2;
end;
Result := sPYM;
end; //end While
end;procedure TForm1.Edit1Exit(Sender: TObject);
begin
Edit2.text := GetPYIndexChar(Edit1.Text);
end;
///取的漢字的拼音的首字母
function 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;
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;
function get_pym(hzstr:string):string;
//传入参数为:hzstr 类型:string (即汉字串)
var realstr,pym,pym1:string;
ch1,ch2:char;
val,xp:integer;
begin
//去掉空串
realstr:=trim(hzstr);
pym:='';
xp:=1;
while xp<=length(realstr) do
begin
ch1:=copy(realstr,xp,1)[1];
if (xp=length(realstr)) or (ord(ch1)<128) then
pym1:=''+ch1
else
begin
ch2:=copy(realstr,xp+1,1)[1];
pym1:=' ';
val:=(ord(ch1) - 176)*94+(ord(ch2) - 160);
if ord(ch1)<128 then
pym1:=''+ch1 // 80
else if ord(ch1)<176 then
pym1:=' ' // A1
else
case ord(ch1) of
216:pym1:=copy('CJWGNSPGCGNENYPBTY ZDXYKYGTDJNNJQMBSGZ CYJSYYQPGKBZGY YWJKGKLJYWKPJQHY W D LSGMRYPYWWCCKZNKYDG',ord(ch2) - 160,1);
217:pym1:=copy('TTNGJEYKK YT JNM YLQLYPYSFQRP L BTGKJFYXJWZLTBN X JJJ XDTT QZYCDXXHG K PHFFSS YBGMXLPBYLL HLX',ord(ch2) - 160,1);
218:pym1:=copy('S M JH OJNGHD QYKLGJH GQ HXQGKEZ WY S JXYEYXADZPMDS M JZQJY J WQJBDZBXG NZ PWHKXHQKMWFBPBY',ord(ch2) - 160,1);
219:pym1:=copy('DTJ KQHYLYGXFPTYJYY P ZLF HMQ HGMXXSXJ D SBBQBEF JYHWWG KPYLQBGLDL DTNMAYDDK NGYC GXLY AYBN',ord(ch2) - 160,1);
220:pym1:=copy('PTSDKDYLHGYMYL XPY JNDQJWXQXFYYFJLEQB RX CQWQQ BNKYMGPLBMJRQ FLNYMYQMTQTRBCJTH TQFRXQHXMJJ LX',ord(ch2) - 160,1);
221:pym1:=copy('QGJMSH KB WYEMYLTXFSYD GL JQ SJNQB TYHBFTDCYZDJWY HQFRXW KQKXE PTLPXJ RMEBWHJLBJ LYYSMDXLCL',ord(ch2) - 160,1);
222:pym1:=copy('QKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNMNYKLDYXZPYLGG MT FPAJJZYLJTYA JGBJPLQGD YQYAXBKY E J NSLY H',ord(ch2) - 160,1);
223:pym1:=copy(' XLZCGHPX H NYTD B JKDL AYFMYDLEBBGQYZKXGLDNDNYSKJ HDLYXBCGHXYPKDJMM NGMM LGW SZXZJFZNML THC ',ord(ch2) - 160,1);
224:pym1:=copy('YDBDLL DDNLKJYKJSY JLKWHQASDKNH SGANHDAASHT PLCPQYBSDMPJLPZJOQLCDHJJYSPRCHNWJNLHLYYQYHW PTDZG',ord(ch2) - 160,1);
225:pym1:=copy('WWM FFJQQQQYXACLBHKDJXDGMMYDJX LLSYGXGKJRYWZWYCLZM SJ LDBYD FCXYHL HY JQ QAGMNYXPFRK SBJLYXY',ord(ch2) - 160,1);
226:pym1:=copy('SYGLN CMH WWMN JJLXXH HSY TT RY YXBYH SMXJS NPWGPXXTAYBGAJ XLY DC W O WK SBNH PDYZNF YYTYCKX',ord(ch2) - 160,1);
227:pym1:=copy('KYBSQKKYTQQXF W HCYKEL QBSQYJQ LMTH WHMKTLKJLY WHEQQHTQH PQ QS FY MDMGBWHWLG LLYSDLMLXPTHMJ',ord(ch2) - 160,1);
228:pym1:=copy('HWLJ YH JXHTX LHXRSWLW JCBXMH QXSD PMGFC GL XYMJSHXPJXWMYQK MYPLRTHB FTPMHYXLCHLHL YLXG S T L',ord(ch2) - 160,1);
229:pym1:=copy('SLD LRPBH HXYYFHB GDMY NQQWL HJJ YWJZYEJJDHPBLQXTQKWHL HQXAGTLXLJXMSLXHT K JEC J JNMFBY F WYB',ord(ch2) - 160,1);
230:pym1:=copy('JZGNYSD QYR LJP LPWXSDWEJBJ B NAYTWGMPAP LYQP L X BNM GGFNZJJ ZSFZYNDXHPLQK C WAL BC JX Y GWK',ord(ch2) - 160,1);
231:pym1:=copy('YP GXF F DKH GXDLQF GD LQWZKXTMHSBG MJ RGLYJBPMLMSXLZ QQH YJ ZYDJWBMJKLDDPMJEGXYHYL HLQYQHKYCW',ord(ch2) - 160,1);
232:pym1:=copy(' JMYYXNATJHYCCX PCQLBZWWYTWBQ MLPMYRJ CXFP N LJPLXXY T LGDLT KLYR GQTGJHHGJLJAXFGFJZSL FDQ ',ord(ch2) - 160,1);
233:pym1:=copy('L LGJDJC N LLJPJQD L JXMY FTSXGCG BR XJQQ T HGYQTJQQLZXJYLYLB YAMC TYLPDJBYRE KL Y HLY QL NW',ord(ch2) - 160,1);
234:pym1:=copy(' ZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMY NQ Y YHBHGXKAMTXYXNB KY ZGJ LQJDF JXDYGJQJ PMG GJJJPKQSB',ord(ch2) - 160,1);
235:pym1:=copy('GBMMCJS LPQPDX DYYKY JDDYYGYWRHJRTG NYQLDKLJ ZG Q JGDYKSHP MTLCPWNJYFYZDJCNMWE YGLBT GMS ',ord(ch2) - 160,1);
236:pym1:=copy('LLYXQ XXBSJSBB GGHFJLWPM JNLYYWDQ H XTYYWHM YHYWD XBTLM YYYFSXJC TX LHJHF SX QHFZM C TQ RTT',ord(ch2) - 160,1);
237:pym1:=copy('DJHNNYZQQMNQDMMG YDXMJGDH DY BFFALLLTD TFXMXQ DNGWQDBD JDXB GSQQDD CMBK FFXMKDM YYSZ MLJDSYN',ord(ch2) - 160,1);
238:pym1:=copy('SPRSKMKMP KL DBQTF WTFGGLYPLLJZHGJ GYP LT M NBTJBQFKTHBY GKPBBYMTD XTBNPDKLEY JNYDDYK DDHQH',ord(ch2) - 160,1);
239:pym1:=copy(' D S TARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSE SHALQFMMGJNLYJBBTMLYZXDXJPLDLPCQDH Y B C BZM LJFLKR',ord(ch2) - 160,1);
240:pym1:=copy(' JSNFRGJHXPDHYJY DLQ SE GXLBLGYXTWMAB HECMWYJY LLJJYHLGBDJL LYGKD P XJYY LWCX FGWYYDLYHCLJS',ord(ch2) - 160,1);
241:pym1:=copy(' MBJHBLY LY BLYDPDQYSXQ BYTDKYXJY NRJMPDJGKL LJB TBJDDB LBL QRPYXJCJLZ SHLTOL NMDDDLNGKAQHQH',ord(ch2) - 160,1);
242:pym1:=copy('JHYKHE NMSHRP QQJ HGMFPRXHJGDY HGHLYR QL YQJN SQTKQJYM XWL FQQQXYFGGYPTQWLM RNFKKFSYYLQBMQAMM',ord(ch2) - 160,1);
243:pym1:=copy('MYX TP HCPTXX MPHP HM LMLDQFYQX YJDJJ ZHQPD ZGLSTJB KBXYQ J GP XQ Q RQTBDKYX KHHGFLB SMDLDG',ord(ch2) - 160,1);
244:pym1:=copy('DZDBL YY NN YB B GL ZX WM C MQNJQ BDQSJTXXMBLTXZCLZSHZCXRQ GJYLX FJPHYM QQYDFQJQLZZN DG Y ',ord(ch2) - 160,1);
245:pym1:=copy('CTXM Y TLKPHTXHTLBJXJLX CDQXCBBTJFQ F LTJBTKQBXXJJLJ H DB JD JDCPRNPQ JPFC L L X DMXMPHJ Z',ord(ch2) - 160,1);
246:pym1:=copy('GS ZQLYLWTJPF YAXM J TZYY WMYTCSJJLJ QLWZMALBXYFBPNLSFHTGJWEJJXXGLLJETG HJQLZFK GNND ZFD QFHBS',ord(ch2) - 160,1);
247:pym1:=copy('AQTGYLBXMMYG ZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXW XYTTYBKMRTJZXQJBHLMHMJQ MQA LD YXYQDLQCAFYWYXQH ',ord(ch2) - 160,1);
else ;
end;
if val < 37 then
pym1:='A'
else
if val < (2*94+33) then
pym1:='B'
else
if val < (4*94+78) then
pym1:='C'
else
if val < (6*94+74) then
pym1:='D'
else
if val < (7*94+2) then
pym1:='E'
else
if val < (8*94+33) then
pym1:='F'
else
if val < (9*94+94) then
pym1:='G'
else
if val < (11*94+87) then
pym1:='H'
else
if val < (15*94+6) then
pym1:='J'
else
if val < (16*94+12) then
pym1:='K'
else
if val < (18*94+72) then
pym1:='L'
else
if val < (20*94+35) then
pym1:='M'
else
if val < (21*94+22) then
pym1:='N'
else
if val < (21*94+30) then
pym1:='O'
else
if val < (22*94+58) then
pym1:='P'
else
if val < (24*94+27) then
pym1:='Q'
else
if val < (24*94+86) then
pym1:='R'
else
if val < (27*94+90) then
pym1:='S'
else
if val < (29*94+58) then
pym1:='T'
else
if val < (30*94+84) then
pym1:='W'
else
if val < (33*94+25) then
pym1:='X'
else
if val < (36*94+49) then
pym1:='Y'
else
if val < (39*94+90) then
pym1:='Z';
end;
pym := pym+pym1;
if ord(ch1)<128 then
xp:=xp+1
else
xp:=xp+2; end; // end of while do
result:=pym;
end;