明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1755|回复: 3

请帮忙看看这段LISP哪里有问题

[复制链接]
发表于 2004-11-29 16:07:00 | 显示全部楼层 |阅读模式
我是一个LISP初学者,编了一段小程序,可是有问题请哪位大虾帮忙指正,谢谢 (defun C:test()
(setq x 0 y 0)
(setq pt (list x y))
(setq sf (findfile "test.txt"))
(setq tf1 (open sf "r"))
(setq tc1 (read-line tf1))
(close tf1)
(setq tc1_L (strlen tc1))
(setq x "0")
(setq n 1)
(repeat tc1_L
(setq test01 (substr tc1 n 1))
(if (= (ascii test01) 9)
(progn (cond (= x "0")(setq x "1")
(= x "1")(setq x "2")
(= x "2")(setq x "3")
(= x "3")(setq x "4")
(= x "4")(setq x "5")
(= x "5")(setq x "6")
(= x "6")(setq x "7")
(= x "7")(setq x "8")
(= x "8")(setq x "9")
(= x "9")(setq x "10")
(= x "10")(setq x "11")
(= x "11")(setq x "12")
)
(setq (strcat "n" x) n)
)
)
(setq n (1+n))
)
(setq test02 (substr tc1 n3 1))
(command "text" "m" pt "5" "0" test02)
(princ)
) 其中test.txt已经在安装目录中
 楼主| 发表于 2004-11-29 16:27:00 | 显示全部楼层
哦!对不起忘了告诉大家test.txt的格式如下:


6        7        1000000        1        040916_A03        ?        91.903x95.079x62.956                N                1


这个文件是由其它软件制成,其中的空格ascii代码是9
发表于 2004-11-29 17:31:00 | 显示全部楼层
1、(setq (strcat "n" x) n);这句是想做什么?如果是为了把n赋值给n和x组成的一个变量的话,必须使用:(set (read (strcar "n" x)) n)


2、(setq test02 (substr tc1 n3 1)),只有cond执行到(= x "2")(setq x "3")时,才能产生n3变量,这之前n3是空的,会导致程序出错


3、(setq n (1+n))        这里要有个空格(setq n (1+ n))


4、[建议]这个cond可以换成(setq x (itoa (+ (atoi x) 1)))
 楼主| 发表于 2004-11-29 19:26:00 | 显示全部楼层
谢谢meflying版主的解答


1,meflying版主说得不错,我的确是想把n赋值给n和x组成的一个变量---现已修改.


2,程序的cond一定会执行到(= x "2")(setq x "3"),所以不必担心n3变量为空.


3,meflying版主看得真仔细,(setq n (1+n))        这里的确少了一个空格,为防止以后再出现类似错误,以后我要把这种累加写成(setq n (+ n 1))


4,meflying版主的这个建议真的很好,只是我这个初学者想不到这么多,觉得cond容易理解,现已换掉,程序运行效果不变.


按照meflying版主的4点指示更改完成后程序运行ok,再次谢谢meflying版主,并送一朵鲜花给meflying.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-30 04:26 , Processed in 0.150023 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表