MJLM 发表于 2022-7-5 16:25:37

DCL action\u tile string太

我对我制作的DCL对话框的lisp代码有问题。似乎我的字符串对于action\u tile“accept”来说太长了,我得到了错误“错误的参数类型:lselsetp nil”。问题是,显然,我有太多的输入值,这使得它很长。如果我删除一行或两行,它可以工作,但我需要将它们全部放入,存储它们并进行验证检查。
 
有没有办法让它像吐字符串一样工作,或者更好地重写它来缓解问题?
 
如有任何建议,我们将不胜感激。
 
这是我要说的部分。
 
如果您愿意,可以使用:
在每个图块中调用的误差函数可以如下所示:
当然,您必须设置误差函数以满足您的需要。
 
默认情况下,“accept”退出值为1,“cancel”退出值为0,但将操作分配给这些互动程序并没有错。
我更愿意使用此模式:
(action_tile "lfm" "(setq lfm_ $value) (err $key $value)")
(action_tile "lfv" "(setq lfv_ $value) (err $key $value)")
.
.

Grrr 发表于 2022-7-5 16:32:36

@Grrr,
 
谢谢你们,你们的第一个建议非常有效,它帮助我理解了如何稍微整合我的代码。然而,你的第二个建议,我更喜欢,似乎不起作用。我替换了vl排序块,但我就是无法使其工作。
 
@斯特凡,
非常感谢。您的方法的实现似乎更容易,但当我尝试这样做时,在使用atof转换为REAL时,我的变量出现了错误。
 
编辑:好的,我设法解决了这个问题,现在一切正常。

Stefan BMR 发表于 2022-7-5 16:42:45

另一个未经测试的:
4

MJLM 发表于 2022-7-5 16:48:55

上帝啊有那么一刻,我以为你只是为了好玩而胡言乱语。
谢谢李。我也会试试你的方法。

Lee Mac 发表于 2022-7-5 16:52:56

我使用此DCL的主要问题是,在visual lisp编辑器中执行时无法遵循这些步骤。当我运行代码时,程序不会出错,我不知道出了什么问题。我是做错什么了还是DCL太差劲了?

MJLM 发表于 2022-7-5 16:57:59

@MJLM,
李的建议管用吗?
 
@李,
我知道您通常使用if函数,但请注意
5
可以稍微缩短为:
6
 
虽然这个建议很棒,但如果MJLM确认它有效,我会保留它。

MJLM 发表于 2022-7-5 17:03:49

我试图实现Lee的方法,但我认为模式(“*[~0-9]*,*`.*.'.'*[~0-9]*”)有问题。几乎所有的盒子都有“无效输入”。

Grrr 发表于 2022-7-5 17:12:21

模式检查十进制格式的数字输入。你的评论表明你正在以帝国主义的方式工作。

MJLM 发表于 2022-7-5 17:15:17

不,不是真的。我只研究实数和整数的度量。

Roy_043 发表于 2022-7-5 17:24:34

页: [1] 2
查看完整版本: DCL action\u tile string太