Andrew1979 发表于 2022-7-5 23:18:24

COND的问题

我的cond函数有问题。
我试图从文本文件中获取一个数字进行评估。如果文本文件显示0,则警报将显示评估已过期。如果没有,程序将继续。唯一的问题是,这个函数不起作用。有什么想法吗?
问题是,按照代码当前的方式,无论文本文件中的数字是多少,都会显示警报。
 
 
(defun checkcount()
(setq计数(atoi评估))
(条件
(=计数0)(警报“评估已过期”)
(>=计数1)
(getVariables Elevation WDE)
(getInput高程WDE)
(设置变量高程WDE)
(偏移高程WDE)
(层)
(处理输入高程WDE)
(门号标高WDE)
))
)

MSasu 发表于 2022-7-5 23:32:16

评估正确;问题似乎在于存储在求值变量中的值-应该是字符串(“0”或“1”):
(and (eq (type Evaluation) 'STR)
    (member Evaluation '("0" "1")))
请编辑您的帖子和所需的代码标签。

hmsilva 发表于 2022-7-5 23:43:04

我建议

;;at you main code
(if (and (= (type Evaluation) 'STR)
(setq Evaluation (read Evaluation))
(= (type Evaluation) 'INT)
   );; and
(checkcount Evaluation)
(prompt "\nWrong Evaluation TYPE!")
);; if

;; usage
;; (checkcount Evaluation)
;; Evaluation as an integer
(defun checkcount (count)
(cond
((= count 0) (alert "Evaluation Expired" ))
((> count 0)
(getVariables-Elevation-WDE)
(getInput-Elevation-WDE)
(setVariables-Elevation-WDE)
(Offset-Elevation-WDE)
(layers)
(processInput-Elevation-WDE)
(DoorNumber-Elevation-WDE)
)
);; cond
);; defun

 
HTH公司
亨里克

MSasu 发表于 2022-7-5 23:57:00

Henrique,请记住,ATOI将始终返回整数(即使提供了非数字字符串作为参数),因此类型验证是多余的。
如果ATOI将引发错误,则最好验证为零。

hmsilva 发表于 2022-7-6 00:07:50

米尔恰,
你是对的,我的错。。。
我修改了我以前的代码来测试INT。
非常感谢。
 
亨里克

MSasu 发表于 2022-7-6 00:18:19

请不要忘记这种情况:
(read nil)

hmsilva 发表于 2022-7-6 00:21:58

谢谢你,米尔恰。
(已更正第3个帖子)
 
亨里克
页: [1]
查看完整版本: COND的问题