yxp 发表于 2013-5-8 19:53:16

关于 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)   返回也是错误

yshf 发表于 2013-5-8 21:24:10

在Visual LISP控制台中未出现错误
_$ (list '(1220 0 0 0))
((1220 0 0 0))

_$ (list '(1220 0 0 0))
((1220 0 0 0))

yshf 发表于 2013-5-8 21:28:11

程序中也没有报告错误
(defun c:test()
   (setq a (read "(1220 0 0 0)"))
   (setq b (list '(1220 0 0 0)) )
   (princ)
)

ZZXXQQ 发表于 2013-5-9 08:31:18

论坛早有类似的讨论

masterlong 发表于 2013-5-9 21:07:37

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=83844

baitang36 发表于 2021-10-27 09:16:22

ACAD2008确实如此,用acad2018不再出现这个错误。看来是软件的bug,桌子已修正。

masterlong 发表于 2021-10-27 09:58:29

好在这个BUG
只是在命令行中直接运行时才会出现错误提示
程序中并不会出现错误提示
也不会引起运行中断
否则如果是一个复杂的程序中出现这类错误
光看代码是怎么也查不出错误的

masterlong 发表于 2021-10-27 09:59:51

突然想到一个问题
既然这类错误在程序运行中不会出现错误提示
那当年我的测试程序是怎么编出来的?

highflybird 发表于 2021-10-28 14:57:42

baitang36 发表于 2021-10-27 09:16
ACAD2008确实如此,用acad2018不再出现这个错误。看来是软件的bug,桌子已修正。

2016没出现,2014会出现,没装2015。
估计这个与unicode 有关。

baitang36 发表于 2021-10-28 15:47:46

highflybird 发表于 2021-10-28 14:57
2016没出现,2014会出现,没装2015。
估计这个与unicode 有关。

跟踪了一下这个函数,函数list部分没错误,能返回正常的cons链表,是和lsp的接口部分出错了。
页: [1]
查看完整版本: 关于 read 的一个致命的问题!!