【发布时间】:2014-05-03 19:21:01
【问题描述】:
我编写了一个替代函数来打开 AutoCAD 图纸。但是,当从 Windows 资源管理器运行文档时,AutoCAD 很难更改文档的打开方式(双击具有文件关联的文件)。我发现的唯一方法是更改注册表项“OpenDdeExec”。提供的参数 (%1) 为我提供了要打开的文件的非转义路径。
在它被解析为特殊字符之前,我需要忽略路径中的转义或用双反斜杠替换反斜杠。在 C# 中,您可以执行 string s = @"I\Like random\backslashes"; 之类的操作,反斜杠将被视为实际的反斜杠字符。在 lisp 中,我发现的唯一等价物是 quote,它有一种奇怪的行为(因为它的正常使用并不完全是我想要实现的)。
如果我写(quote (I\Like random\backslashes)) 之类的东西,结果将是(I\\Like random\\backslashes),这几乎是我需要的。但是,我必须摆脱括号。知道如何实现吗?
注意:这样做(quote I\Like random\backslashes) 会因为空间问题而中断。但是,它适用于(quote I\Like\backslashes)。这将像我想要的那样输出I\\Like\\backslashes。
这是当前存在所描述问题的 OpenDdeExec:
(OPENFROMSHELL (QUOTE (%1)))
【问题讨论】:
-
在 Common Lisp 中,这样的符号可以使用 |字符,像这样:
(quote |I\Like random\backslashes|)。不知道,不过它是否可以在 autolisp 中工作。 -
其他可以尝试的可能是
(intern "I\Like random\backslashes")或(make-symbol "I\Like random\backslashes") -
两者都不存在。我最终编写了一个小互操作应用程序来启动 AutoCAD 并运行命令。不过感谢您的建议!