VFP报表预览问题(求助)已解决供大家参考
想问一下substr()与substrc()的差别,还有len()与lenc()的差别。非常感谢各位朋友!

造成这种情况,是由于备注截取字符时,最后一个字符是半个汉字造成的。
解决方法如下
程序代码:
*!*测试字符串最右端字符是否为非正常汉字字符
clear
*!*清屏
a="1好人12来,了,0中国,"+chr(200)
*!*赋值给变量a ,这赋值变量测试时可能用chr()函数输入非正常汉字字符
?len(a)
*!*显示a字符串数值
?rightc(subs(a,1,len(a)),1)
*!*取a最右边的字符,这个很关键,如果a最右边是一个非汉字字符或字母\数字就会取一个字符,如果是汉字会取整个汉字,也就是2个字符
?len(rightc(subs(a,1,len(a)),1))
*!*取得a右边字符的字符串数值,如果数值是2那么是汉字,如果数值是1则为非正常汉字或字母\数字等
?asc(rightc(subs(a,1,len(a)),1))
*!*取得a最右边字符的asc码值,再根据asc码是否大于128区分是字母\数字,还是非正常汉字
*!*下面是测试程序VFP6.0运行正常,供大家参考或提出建议。
if len(rightc(subs(a,1,len(a)),1))=2
?"汉字"
else
if asc(rightc(subs(a,len(a),1),1))>128
?"非正常汉字"
else
?"数字或字符"
endif
endif
以下是引用"bccn0906"朋友的代码,有新的思路。

程序代码:
不用判断,直接截取。
如:每截取9个字符为一段,截完为止
a="1好人12来,了,0中国,"+chr(200)
I=1
L=9
STR1=''
***************
i=I+LEN(STR1)
STR1=SUBSTRC(SUBSTR(a,I,L),1) &&取第1段
?STR1
*****************
i=I+LEN(STR1)
STR1=SUBSTRC(SUBSTR(a,I,L),1) &&取第2段
?STR1
****************
i=I+LEN(STR1)
STR1=SUBSTRC(SUBSTR(a,I,L),1) &&取第3段
?STR1
*按此类推......
if empty(STR1)
wait wind '截取完毕'
endif
输入内容相同,报表预览时效果不一样,不管哪种预览打印的时候正常,如图
出现问题是随机的,报表没有修改。
正常情况
有知道原因的吗?
[ 本帖最后由 qczx3358 于 2014-2-7 17:25 编辑 ]









