Michaels 发表于 2022-7-6 09:44:50

需要帮助来保存我的数据

你好
 
我想知道为什么这些代码工作不正常,并返回错误消息。
 
谢谢

pBe 发表于 2022-7-6 09:54:54

至少用“\”表示分数的错觉
 

(setq a (if a b "1"))
(if (progn
(initget (+ 1 2 4) "1\\4 1\\2 2 1.5")
(setq a (cond
((getkword (strcat "\n Enter Inch Number [1\\4/1\\2/2/1.5] <"
a" > :")))(T a))))
(setq b a)
)

 
为了获得更好的外观,请确保dynmode设置为1
 
不需要变量转换
 
顺便说一句:
http://lee-mac.com/promptwithdefault.html对于默认教程

Michaels 发表于 2022-7-6 10:00:12

谢谢
 
但这并不能将给定的数据保存到变量a,变量a需要根据最后一个给定的数据进行更改。
 
我想这是因为不存在(atoi a 3 2)。
 
你怎么想。

pBe 发表于 2022-7-6 10:09:58

啊。。。。我懂了
 
通过使用“\”不能将变量a转换为浮点数
但如果使用“/”,getkword无法将其识别为1/4
也许有一个逃生密码。。。嗯嗯
 
顺便说一句,使用distof代替,1/4是0.25,将1/4转换为整数将得到1,此外itoa没有模式参数
 
我会再打给你。。。坚持

Lee Mac 发表于 2022-7-6 10:18:07

思考变量“a”指向的数据类型:
 

(setq a (cond ( a ) ("1")))

(if
(progn (initget "0.25 0.5 2 1.5")
   (setq a
   (cond
       (
         (getkword
         (strcat "\n Enter Inch Number <" a "> :")
         )
       )
       ( a )
   )
   )
)
(princ (strcat "You have Selected: " a))
)

Michaels 发表于 2022-7-6 10:21:26

谢谢李。
 
虽然这会将用户选择的数字保存到参数中,但第二次使用它时,我不能
按enter键获取变量的上次保存的数字。

Lee Mac 发表于 2022-7-6 10:31:22

 
它将其保存为变量,而不是参数。您设置了initget位1,防止用户按enter键-我编辑了我的帖子以删除initget位值。
 
由于您需要“真实”值,我更倾向于这样处理:
 
3

pBe 发表于 2022-7-6 10:34:28

哦,好的。我打字太慢了。。我正要建议用小数代替分数。
但我可以发誓我做过一次。。。我会继续挖掘
 
编辑:哎呀,李,你肯定能快速编码和打字。。。。

Michaels 发表于 2022-7-6 10:39:25

这不仅仅是伟大的李。非常感谢。
 
非常感谢pBe。
 
非常感谢。

Lee Mac 发表于 2022-7-6 10:45:02

 
练习过多
 
 
不客气,迈克尔-希望我的代码可以理解。
页: [1]
查看完整版本: 需要帮助来保存我的数据