PB10.5中取五笔拼音首字母的问题

xmpbdev 2009-01-10 02:39:15
以下写法在PB9中正常,升级到10.5后不能得到正确结果,请高手指点

//==============================================================================
// 函数: f_getpywb()
//------------------------------------------------------------------------------
// 描述:
//------------------------------------------------------------------------------
// 参数:
// string inputstring
// string pywb
//------------------------------------------------------------------------------
// 返回值: string
//==============================================================================

STRING LETTER,LETTER1,THISLETTER,HZ,PYSTRING
INTEGER LETTERLEN,I
LONG QW

THISLETTER = TRIM(INPUTSTRING)
LETTERLEN = LEN(THISLETTER)
PYSTRING = ""
CHOOSE CASE upper(pywb)
CASE 'PY'

LETTER='ysx mcsdqlybjjjgczbdfyawj yhcywgj dsn xy sng lggllyj z yssgyqyd xjyydldwj wbbft xdhgbczsrfmjwyfcwdzpyddwylfaypdftzyjqxxzxnnxxzqbpysyzgmzbqbzcyzbxqsbhgxefmbhhgqcxstglygymxalelccxzrjsdnjjtzzcljdtstbnxtyxxgkwyflhyqspxmxxdjzlshxjbcfybyxhczbjyzlwlcz gtsmdzxpqglsjfzzlslhdzbwjncjysqycjrzcwybtyfdwecskdcbyhyzqyyxzcfbzmjyxxcdcztbzjwszsxyrnygmdthjxsjjccsbxyytsyfbxzgclczzbscyzqscjzqydxlbbjllmqxtydzsqjtzplcgqdzwjbhctdyfxyelbgxxmyjjqfzasyjncydk jcjszcbatcclyjqmwnqncllkbybzzsyhjqltwlccxthllzntylnzxddtceejys sd hwnly t jymrymcjgjmzgxykymsmjkmfxmtghpfmqjsmtgjqdgyalcmzsdjlxdffjczfmzffkgpkhrcjqcjdwjlfqdmlzbjjscgckdejcjdlzyckccclfcq czgbdldjjyhddwgsjdaccctllpskghzzljlgjgjjtjjjzczmlzyjklzyzmljkywxmkjlkjgmclykjqlblkmdxwyxysllpsjjjqxyjfjdjdmxxllcxqyjb bggypjyggdjgnjyjkhqfqzkhyghdkllsdjjxeyqxnzsxwwxdjlgxxjaqscsqkjex yzhydz p qyzmtstzfcyldjagylallyyygmqq ldhcssadsgbrlyjsjwrcgqc hmmxjdyohycqgbehwnjdogjlgwqwjycstwesjpwmrdsztxyqpzhyhykhtpbfyhtdwzbtxhqexzxxkhtexwltxymnx hykpmzhxlblbmlsfhyyggbhyjt'
LETTER=LETTER+'fhbxqbjjzjqtyzkxbyqxbjxshztsfglxmxzxfghkzssggylclsarjyhslllmzxelgl xdjtbgyzbpktzhkzjyqsbctwwqjpjwxhgaqtgylbxmmygszldydqmjjrgbjtkgdhgkblqkbdmbylxwcxyttybkmrtjzxqjbhlmhmjjzmqasldcyxyqdlqcafywyxqhzgnyfljbyfdjfrgsfmbyzhqfbwj yfaggphzbyyzffwodgrlbftwlbzgycgxcdj ygzyyyytytydwegazahxj zyyhlrmgrxx'+space(93)+'dclhneljjthtbwjybjjbxjjtjteekhwsljplpsfazpqqbdlqjjtyyqlyzkdksqj yyqzldqcgjjyzjs cmraqthtejmbctyhy'+space(93)+'bkmhyzw dqfhyyxwshctxrljgjxhccyyyjltktsytmxgtcjtzayyoczlylbszyw jytsjyhbyshfjlygjxxtmzyyltxxypzlx'+space(93)+'yjzyzyybnhmymdyylblhlsyyggllsqxlxhdwkqgyshqywljyyhzmsljljjcjjyy cbcpzjmylcjlnjjjlxyjmlzjqlycmhcfm'+space(93)+'mfpqqmfylmcfqmmmz fhjgtthkhchydxtmjdymyydyyydydcymdydlfmycqzwzz mabtbzmdzgdfycgqyttsfwbdtzqssstjj'+space(93)+'hjytsxlywwkxexwznnqzjjjjccchyyxbzxzcyjtllcqxynjycyycynzcqyyoewy czdcjehylpwp mlgkdldgqbchjxy'
......
//太长了,省去
FOR I = 1 TO LETTERLEN
IF ASC(MID(THISLETTER,I,1)) > 128 THEN
HZ = MID(THISLETTER,I,2)
QW = 190 * (ASC(LEFT(HZ,1)) - 129) + ASC(RIGHT(HZ,1)) - 64 + 1

IF QW < 1 THEN
PYSTRING = PYSTRING + "?"
ELSE
if QW>len(LETTER) then
PYSTRING = PYSTRING + "?"
else
PYSTRING = PYSTRING + MID(LETTER,QW,1)
end if
END IF
I = I + 1
ELSE
PYSTRING = PYSTRING + MID(THISLETTER,I,1)
END IF
NEXT
CASE 'WB'
..........
//太长了,省去

//254 * (ASC(LEFT(HZ,1)) - 129) + ASC(RIGHT(HZ,1)) - 64 + 1
FOR I = 1 TO LETTERLEN
IF ASC(MID(THISLETTER,I,1)) > 128 THEN
HZ = MID(THISLETTER,I,2)
QW = 254 * (ASC(LEFT(HZ,1)) - 129) + ASC(RIGHT(HZ,1)) - 64 + 1
IF QW < 1 THEN
PYSTRING = PYSTRING + "?"
ELSE
if QW>len(LETTER1) then
PYSTRING = PYSTRING + "?"
else
PYSTRING = PYSTRING + MID(LETTER1,QW,1)
end if
END IF

I = I + 1
ELSE
PYSTRING = PYSTRING + MID(THISLETTER,I,1)
END IF
NEXT
END CHOOSE

RETURN TRIM(lower(PYSTRING))

...全文
301 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2009-02-03
  • 打赏
  • 举报
回复
把ASC改为ASCA,left改为lefta,mid改为mida,right改为righta,len改为lena即可
sybasebbs 2009-01-14
  • 打赏
  • 举报
回复
PB10后很多取字符串的函数都改成XXX(A)后面加了个A,原有的名称的功能不一样了。
lianwl 2009-01-12
  • 打赏
  • 举报
回复
顶一个

743

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧