【问题标题】:Dealing with unescaped strings处理未转义的字符串
【发布时间】: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 并运行命令。不过感谢您的建议!

标签: autocad dde autolisp


【解决方案1】:

遗憾的是,AutoCAD 有限的 LISP 无法做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2011-04-30
    • 2017-12-27
    相关资源
    最近更新 更多