关于 read 的一个致命的问题!!
本帖最后由 yxp 于 2013-5-8 20:15 编辑(read "(1219 0 0 0)") 没问题。
(read "(1220 0 0 0)") 读不出来了,“显示应用程序错误: 参数类型错误”
从 1220 到 1239 , 后面的三个 0 改成任何数字结果都一样,但是如果减少或增加一个,问题又没了。
(read "(1240 0 0 0)") 也没问题
用 list 也一样错误
(list '(1220 0 0 0))错误
(list 1220 0 0 0) 返回也是错误 在Visual LISP控制台中未出现错误
_$ (list '(1220 0 0 0))
((1220 0 0 0))
_$ (list '(1220 0 0 0))
((1220 0 0 0))
程序中也没有报告错误
(defun c:test()
(setq a (read "(1220 0 0 0)"))
(setq b (list '(1220 0 0 0)) )
(princ)
)
论坛早有类似的讨论 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=83844 ACAD2008确实如此,用acad2018不再出现这个错误。看来是软件的bug,桌子已修正。 好在这个BUG
只是在命令行中直接运行时才会出现错误提示
程序中并不会出现错误提示
也不会引起运行中断
否则如果是一个复杂的程序中出现这类错误
光看代码是怎么也查不出错误的 突然想到一个问题
既然这类错误在程序运行中不会出现错误提示
那当年我的测试程序是怎么编出来的? baitang36 发表于 2021-10-27 09:16
ACAD2008确实如此,用acad2018不再出现这个错误。看来是软件的bug,桌子已修正。
2016没出现,2014会出现,没装2015。
估计这个与unicode 有关。 highflybird 发表于 2021-10-28 14:57
2016没出现,2014会出现,没装2015。
估计这个与unicode 有关。
跟踪了一下这个函数,函数list部分没错误,能返回正常的cons链表,是和lsp的接口部分出错了。
页:
[1]