smartstar 发表于 2008-12-17 10:35:00

[求助]lisp程序出错

<p>我想做一个命令查询的程序,可是总是有问题,请高人修改!</p><p>程序如下:<br/>(DEFUN C:TCX()<br/>(SETQ K (/ (GETVAR "dimasz") 4.0)) (SETQ BBLL1 <br/>(/ (GETVAR "dimasz") 4.0)) (SETQ CEN1 (/ (GETVAR "dimcen") BBLL1)) (SETQ DLI1 (/ <br/>(GETVAR "dimdli") BBLL1)) (SETQ EXE1 (/ (GETVAR "dimexe") BBLL1)) (SETQ EXO1 (/ <br/>(GETVAR "dimexo") BBLL1)) (SETQ GAP1 (/ (GETVAR "dimgap") BBLL1)) (SETQ TXT1 (/ <br/>(GETVAR "dimtxt") BBLL1)) (SETQ TSIZ1 (/ (GETVAR "textsize") BBLL1)) (SETQ LTSC1 <br/>(/ (GETVAR "ltscale") BBLL1))&nbsp; (SETQ DDH (RTOS (GETVAR "CDATE") 2 6)) <br/>&nbsp;(SETQ HR (SUBSTR DDH 10 2)) (SETQ YR (SUBSTR DDH 1 4)) (SETQ MR (SUBSTR DDH <br/>5 2)) (SETQ DR (SUBSTR DDH 7 2)) (SETQ RQ1 (STRCAT YR "." MR "." DR)) <br/>(SETQ A (* K 7.0)) (SETQ B (* K 6.0)) (SETQ C (* K <br/>5.0)) (SETQ D (* K 4.0)) (SETQ E (* K 3.5)) (SETQ F (* K 3.0)) (SETQ FF (* K <br/>2.2)) (SETQ G (* K 1.8)) (SCXTSM1) (SETQ YR2 (SUBSTR DDH 3 2))<br/>(IF (OR (= YR2 "05")(= YR2 "03")(= YR2 "04")(AND (= YR2 "02")(OR (= MR "07")<br/>(= MR "08")(= MR "09")(= MR "10")(= MR "11")(= MR "12"))))(PROGN (SCXTSM2)(EXIT)))</p><p>(TERPRI)(PROMPT "&nbsp; 今天日期 : ") (PRINC RQ1) (PROMPT "&nbsp;&nbsp; ")(SCXTSM2)SETVAR "cmdecho"0)<br/>(DEFUN SCXTSM1() (SETQ DDH (RTOS (GETVAR "CDATE") 2 6))(SETQ YR (SUBSTR DDH 1 4))<br/>(SETQ MR (SUBSTR DDH 5 2))(SETQ DR (SUBSTR DDH 7 2)) (SETQ HR (SUBSTR DDH 10 2))<br/>(SETQ MIN (SUBSTR DDH 12 2)) (SETQ DATEHMS (STRCAT YR "年" MR "月" DR "日" HR "时" MIN "分 "))<br/>(ALERT&nbsp; (STRCAT <br/>"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ◆工具&nbsp;&nbsp;<br/>★SS……相似选择(选择易)<br/>★LAY………图层控制工具栏<br/>★Y………………贱人工具箱<br/>&nbsp;" ))) (DEFUN SCXTSM2()&nbsp; (ALERT&nbsp; (STRCAT <br/>"欢迎继续使用【工具箱】<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前时间:" DATEHMS )&nbsp; )&nbsp; ) (TERPRI)</p><p>(PRINC "【工具箱】已加载完毕! 命令查询:TCX ")<br/>(princ)</p>

00放飞梦想00 发表于 2020-3-25 10:11:37

ZZXXQQ 发表于 2008-12-23 20:35
程序中用了MIN做了变量名,可MIN为LISP中的函数名受到保护。所以只要将变量MIN改名就可以了。

程序中MIN改成什么?

00放飞梦想00 发表于 2020-3-26 08:13:12

00放飞梦想00 发表于 2020-3-25 10:11
程序中MIN改成什么?

刚开接触这块,望大神修改,给源码,谢谢!

OooCcc 发表于 2020-4-23 17:00:23

写lisp最容易出现这种问题。。。

ZZXXQQ 发表于 2008-12-17 20:47:00

自己查查看,少括弧。

smartstar 发表于 2008-12-22 14:52:00

请帮我修改一下吧,我实在是找不出了!谢谢!

ZZXXQQ 发表于 2008-12-22 19:18:00


(DEFUN C:TCX()
(SETQ K (/ (GETVAR "dimasz") 4.0))
(SETQ BBLL1 (/ (GETVAR "dimasz") 4.0))
(SETQ CEN1 (/ (GETVAR "dimcen") BBLL1))
(SETQ DLI1 (/ (GETVAR "dimdli") BBLL1))
(SETQ EXE1 (/ (GETVAR "dimexe") BBLL1))
(SETQ EXO1 (/ (GETVAR "dimexo") BBLL1))
(SETQ GAP1 (/ (GETVAR "dimgap") BBLL1))
(SETQ TXT1 (/ (GETVAR "dimtxt") BBLL1))
(SETQ TSIZ1 (/ (GETVAR "textsize") BBLL1))
(SETQ LTSC1 (/ (GETVAR "ltscale") BBLL1))
(SETQ DDH (RTOS (GETVAR "CDATE") 2 6))
(SETQ HR (SUBSTR DDH 10 2))
(SETQ YR (SUBSTR DDH 1 4))
(SETQ MR (SUBSTR DDH 5 2))
(SETQ DR (SUBSTR DDH 7 2))
(SETQ RQ1 (STRCAT YR "." MR "." DR))
(SETQ A (* K 7.0))
(SETQ B (* K 6.0))
(SETQ C (* K 5.0))
(SETQ D (* K 4.0))
(SETQ E (* K 3.5))
(SETQ F (* K 3.0))
(SETQ FF (* K 2.2))
(SETQ G (* K 1.8))
(SCXTSM1)
(SETQ YR2 (SUBSTR DDH 3 2))
(IF (OR (= YR2 "05")(= YR2 "03")(= YR2 "04")(AND (= YR2 "02")(OR (= MR "07")
(= MR "08")(= MR "09")(= MR "10")(= MR "11")(= MR "12"))))(PROGN (SCXTSM2)(EXIT)))
(TERPRI)
(PROMPT "今天日期 : ")
(PRINC RQ1)
(PROMPT "   ")
(SCXTSM2)
(SETVAR "cmdecho"0)
)
(DEFUN SCXTSM1()
(SETQ DDH (RTOS (GETVAR "CDATE") 2 6))
(SETQ YR (SUBSTR DDH 1 4))
(SETQ MR (SUBSTR DDH 5 2))
(SETQ DR (SUBSTR DDH 7 2))
(SETQ HR (SUBSTR DDH 10 2))
(SETQ MIN (SUBSTR DDH 12 2))
(SETQ DATEHMS (STRCAT YR "年" MR "月" DR "日" HR "时" MIN "分 "))
(ALERT(STRCAT
"                ◆工具
★SS……相似选择(选择易)
★LAY………图层控制工具栏
★Y………………贱人工具箱
"))
)
(DEFUN SCXTSM2()
(ALERT (STRCAT "欢迎继续使用【工具箱】\n          当前时间:" DATEHMS))
)
(TERPRI)
(PRINC "【工具箱】已加载完毕! 命令查询:TCX ")
(princ)

smartstar 发表于 2008-12-23 12:05:00

谢谢版主!!

smartstar 发表于 2008-12-23 13:57:00

<p>版主,还是提示错误!</p><p>如图所示:</p>

ZZXXQQ 发表于 2008-12-23 20:35:00

程序中用了MIN做了变量名,可MIN为LISP中的函数名受到保护。所以只要将变量MIN改名就可以了。

smartstar 发表于 2008-12-24 09:54:00

<p>这次ok了</p><p>谢谢!</p>
页: [1] 2
查看完整版本: [求助]lisp程序出错