新版下使用(length(vl-string->list"中等线体"))和旧版下(strlen"中等线体")会是相同结果;
如果要在旧版下得到新版strlen的结果要复杂些,相当于需要按字分解字符串,也是通过vl-string->list转成表来处理,碰到大于128的,后跳2个,不同后跳1个,计数加1,表循环处理完了,结果也就出来了。
综合起来可以象下边这样,不过不管怎么样都得面对修改已有代码的问题
(defun Mstrlen(str NewOrOLD / l i)
(setq l(vl-string->list"中等线体")i 0)
(if NewOrOLD
(while l
(setq l((if(>(car l)128)cddr cdr)l)
i(1+ i)))
(length l)))
_$ (MSTRLEN "中等线体"t)
4
_$ (MSTRLEN "中等线体"nil)
8
_$
学习了,谢谢楼上各位
页:
1
[2]