本帖最后由 llsheng_73 于 2022-9-23 22:44 编辑
新版下使用(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
_$
|