![]() |
两个全局变量是一样的写法一个正常,一个不正常,帮一下
两个全局变量是一样的写法一个正常,一个不正常,帮一下
www.dimcax.com 两个全局变量是一样的写法一个正常,一个不正常,帮一下 (defun c:qq (/ fil len n sum e ed et ln tzb sm sumst str in) (princ"\n程序功能:统计所输入的字符串标记打头的所有数据的相加值") (vl-load-com) (command "redraw") (if (null strjj) (setq strjj "=")) (setq str (getstring (strcat "\n请输入要统计数字前面的那个字符标记<" strjj ">:"))) (if (null str) (setq str strjj)) (setq strjj str) (if (null nit) (setq nit 3)) (setq in (getint (strcat "\n请输入小数位精度:<" (rtos nit 2) ">"))) (if (null in) (setq in nit)) (setq nit in) (setq fil (ssget '((0 . "text")))) (setq len (sslength fil)) (setq n 0) (setq sum 0) (while (<= n (1- len)) (setq e (ssname fil n)) (if (= "text" (cdr (assoc 0 (setq ed (entget e))))) (progn (setq et (dxf 1 ed)) (if (wcmatch et (strcat "*" strjj "*")) (progn (setq ln(+ (+ (strlen strjj) 1) (vl-string-search strjj et))) (setq sm(substr et ln)) (setq sum (+ sum (atof sm))) ) ) ) ) (setq n (1+ n)) ) (setq sumst (rtos sum 2 nit)) (princ (strcat "\n" strjj sumst)) ) 各位大哥,我里面的两个全局变量strjj和nit,便nit的显示是正常的,但为什么strjj 在程序第二次运行时却看不到啦变成一个空字符串啦,我的两个变量都是一样的写法,就是不知道strjj的问题出在那啦,麻烦,各路大哥,高抬贵手帮我看看,谢谢 d 是(setq str (getstring (strcat "\n请输入要统计数字前面的那个字符标记<" strjj ">:"))) 如果直接回车 应有 str="" 而不是 str=nil 则(null str)=false 导致下文 (if (null str) (setq str strjj)) (setq strjj str) 将""赋给strjj ,下一次运行时strjj自然为"" d 解决了 d |
所有的时间均为北京时间。 现在的时间是 08:59 PM. |