2012-09-05 92 views
2

我寫了一個替代功能來打開AutoCAD繪圖。但是,當AutoCAD從Windows資源管理器中運行時,它很難更改打開文檔的方式(雙擊文件關聯文件)。我發現的唯一方法是更改​​「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))) 
+0

在Common Lisp中,可以使用|字符,就像這樣:'(quote | I \ Like random \ backslashes |)'。不知道,如果它能在autolisp中工作的話。 –

+0

它不,不幸的。 – Pluc

+0

其他要嘗試的內容可能是'(intern「I \ Like random \ backslashes」)'或'(make-symbol「I \ Like random \ backslashes」)' –

回答

0

這是不幸的是沒有可能與AutoCAD的有限LISP。