![]() |
大家看看是lisp的bug吗?
大家看看是lisp的bug吗?
www.dimcax.com 大家看看是lisp的bug吗? 下面一段用于读取一格式为"点名,x坐标,y坐标[,h高程]"的数据文件。data.txt(已上传)的内容如下: 红花塘,219696.0,260160.0 双龙,254142.0,208135.0 奇怪的是在读取时,(read lw) 总是把文件中“双龙”自动转为“红花塘” 只要改动其中的一个点名,则不会出现这种情况,“双龙”和“红花塘”有什么特殊的联系吗? (defun readfile (pth / f lw pn plst lst p) (setq f (open pth "r") plst nil ) ;_ 结束setq (while (/= (setq lw (read-line f)) nil) (setq lw (vl-string-translate "," " " lw) lw (strcat "(" lw ")") lw (vl-string-translate "'" "-" lw) lst (read lw) ;此处会自动改变点名,不可思议。 pn (car lst) ) ;_ 结束setq (cond ((= (type pn) 'sym) (setq pn (vl-symbol-name pn))) ((= (type pn) 'int) (setq pn (itoa pn))) ((= (type pn) 'real) (setq pn (vl-string-trim "0" (rtos pn 2)))) (t nil) ) ;_ 结束cond (if (= (substr pn 1 1) ".") (setq pn (strcat "0" pn)) ) ;_ 结束if (if (/= (nth 3 lst) nil) (setq p (list (nth 2 lst) (nth 1 lst) (nth 3 lst))) (setq p (list (nth 2 lst) (nth 1 lst) 0)) ) ;_ 结束if (setq plst (cons (list pn p) plst)) ) ;_ 结束while plst ) ;_ 结束defun 文件预览: d 试验发现,是“双龙”两个字有问题,不管怎么变,只要保留"双龙",展点进去后对应“双龙”点坐标的点名就会变成“红花塘” 我从来不知道在lisp里面“双龙”=“红花塘” d |
所有的时间均为北京时间。 现在的时间是 07:34 PM. |