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 编辑 ]