| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Position von '\' im String dwgprefix (1130 mal gelesen)
|
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM
|
erstellt am: 01. Mrz. 2012 15:00 <-- editieren / zitieren --> Unities abgeben:
Mittels (VL-STRING-search "\\" (getvar dwgprefix) 4) versuche ich, die Position des 4. Auftritts von '\' zu erhalten und bekomme als Ergebnis nil. Wenn ich als Suchkriterium den Backslash nur einmal statt zweimal nehme erhalte ich '("_> ' mit blinkendem Cursor. Liege ich völlig falsch mit meinem Ansatz? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1356 Registriert: 11.01.2006 WIN 10 ACAD 2022
|
erstellt am: 01. Mrz. 2012 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Hallo cad4fun, also erstmal muß die Sysvar im Anführungszeichen: (getvar "dwgprefix") und dann suchst du damit nicht nach dem vierten vorkommen sondern gibst die Startposition zum Durchsuchen des Strings an. Damit kannst du Zeicen am Anfang überspringen. Für dein Vorhaben brauchst du was anderes. Lies mal das hier, da hab ich was hochgeladen das sollte helfen http://ww3.cad.de/foren/ubb/Forum145/HTML/002546.shtml#000000 Bei Fragen ... frag. ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 01. Mrz. 2012 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3329 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 01. Mrz. 2012 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM
|
erstellt am: 01. Mrz. 2012 16:01 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von CADmium:
aber du suchst doch bestimmt nicht nur die Position, sondern den Teil davor oder danach , oder?
Du hast es exakt erfasst(davor), und ich habe leider unterschiedliche Pfadlängen. Und dann sollte man halt Englisch können. Danke auch an die anderen 2, jetzt hab ichs gefunden mit (vl-string-search "\\" (getvar "dwgprefix") 35) jetzt kann ich mich weiter durchkämpfen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 01. Mrz. 2012 16:20 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
|
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM
|
erstellt am: 02. Mrz. 2012 08:56 <-- editieren / zitieren --> Unities abgeben:
Danke für den Code-Schnipsel, bin mit (setq backslashpos (vl-string-search "\\" (getvar "dwgprefix") 33)) (setq einfuegepfad (strcat (substr (getvar "DWGPREFIX") 1 backslashpos)"\\Schriftfeld\\")) vielleicht nicht schön, aber für mich ausreichend zum gewünschten Ergebnis gekommen [Diese Nachricht wurde von cad4fun am 02. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 02. Mrz. 2012 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für cad4fun
Auch wenn das Thema eigentlich schon vorbei ist, für solche Sachen verwende ich immer gerne vl-string->list und vl-list->stringEin Beispiel:
Code:
(defun c:test ( / INTSEARCHPATTERN POSLIST SPLITTEDELEMENTS STRLIST) (setq StrList (vl-string->list(getvar "DWGPREFIX")) IntSearchPattern(car(vl-string->list "\\"))) (setq PosList (test:PosList StrList IntSearchPattern) SplittedElements (test:SplittedElements StrList IntSearchPattern)) ) ;;;Positionen für Substr, an den der SearchPatter auftritt (defun test:PosList (StrList IntSearchPattern / n) (setq n 0) (vl-remove-if 'not (mapcar '(lambda(A) (setq n (+ n 1)) (if (= A IntSearchPattern)n)) StrList))) ;;;Zwischenelemente, die zwischen den SearchPattern's liegen (defun test:SplittedElements (StrList IntSearchPattern / A RETVAL TEMP) (vl-remove-if 'not (mapcar '(lambda(A) (setq retval nil) (if(= A IntSearchPattern) (setq retval(reverse temp) temp nil) (setq temp (cons A temp))) (if retval(vl-list->string retval)))StrList)))
In der PosList werden die Positionen für SUBSTR ausgegeben, also beginnend bei 1 für das erste Zeichen. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |