Hallo zusammen, ich habe folgendes Problem und das wurde schon so oft diskutiert jedoch immer Lösung "\" zu "\\" was mir leider nicht weiter hilft.
Ich lese mittels Lisp den aktuellen Installationspfad meiner Applikation aus. Dieser Pfad muss mittels Lisp in die Registry geschrieben werden.
Alles kein Problem, bis auf dieses: Der Pfad muss z.B. zwingend so geschrieben werden: C:/ryfcad nicht so wie ich auslese C:\ryfcad
Grund: der Pfad wird in die Variable "ORIGAPPDIR" (Registry Eintrag) übergeben, die ich in meiner Menüdatei weiter verwende.
z.B.
(command "_-insert" (strcat(getenv "ORIGAPPDIR") "/Block/Kanalisation/Bankett_60-10_B45l") pause "" "" pause "_move" "_last" "" pause pause)
Also direkte Pfadangabe zur Blockdatei ohne den Pfad "fest zu verdrahten".
Und hier kommt die Eigenschaft des Backslash innerhalb "ORIGAPPDIR" bei Verwendung in der Menüdatei zum tragen: AutoCAD wartet auf eine Eingabe, statt den Pfad korrekt auszulesen.
Ein manueller Registry-Eintrag mit Backslash funktioniert. Wie kriege ich das nun mit Lisp hin? Habe diverse Codes getestet mit Ergebnis (<_
z.B. string-replace (Forumsbeitrag)
Aufruf in der Lispdatei:
(string-replace <ausgelesener Pfad> "\" "/")
Funktion:
( defun string-replace ( str1 sub1 sub2 )
( setq str1 ( string str1 ) )
( setq str2 "/" )
( setq sub1 ( string sub1 ) )
( setq sub2 ( string sub2 ) )
( setq index1 0 )
( loop
( if
( string-equal str1 sub1 :start1 index1 :end1 ( + index1 ( length sub1 ) ) :start2 0 )
; then
(
( setq str2 ( concatenate 'string str2 sub2 ) )
( setq index1 ( + index1 ( length sub1 ) ) )
)
; else
(
( setq str2 ( concatenate 'string str2 ( char str1 index1 ) ) )
( incf index1 )
)
)
( when ( > index1 ( length str1 ) ) ( return str2 ) )
)
)
Was mache ich falsch?
------------------
Auch für LT gibt es Lösungen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP