Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Position von '\' im String dwgprefix

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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



Sehen Sie sich das Profil von cad4fun an!   Senden Sie eine Private Message an cad4fun  Schreiben Sie einen Gästebucheintrag für cad4fun

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Andreas Kraus an!   Senden Sie eine Private Message an Andreas Kraus  Schreiben Sie einen Gästebucheintrag für Andreas Kraus

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 01. Mrz. 2012 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cad4fun 10 Unities + Antwort hilfreich

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 01. Mrz. 2012 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cad4fun 10 Unities + Antwort hilfreich

"\" liefert das "-Zeichen  ... der String ist also nicht abgeschlossen .. damit ist also auch der Parameterausdruck noch offen ...


(vl-string-search ... 4) ... liefert nicht das 4.Auftreten, sondern durchsucht den String nach erstmaligem auftreten nach dem 4. Zeichen

aber du suchst doch bestimmt nicht nur die Position, sondern den Teil davor oder danach , oder?

------------------
      - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADchup
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von CADchup an!   Senden Sie eine Private Message an CADchup  Schreiben Sie einen Gästebucheintrag für CADchup

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cad4fun 10 Unities + Antwort hilfreich

Hi,

die andern beiden haben's ja schon gesagt.
Hier die passenden Seiten von Axel: http://autolisp.mapcar.net/strings.html  und folgende...


Gruß
CADchup

------------------
CADmaro.de

[Diese Nachricht wurde von CADchup am 01. Mrz. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cad4fun
Ehrenmitglied



Sehen Sie sich das Profil von cad4fun an!   Senden Sie eine Private Message an cad4fun  Schreiben Sie einen Gästebucheintrag für cad4fun

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 01. Mrz. 2012 16:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cad4fun 10 Unities + Antwort hilfreich

IMHO der falsche Ansatz ....  wie ist es mit

(defun PATH2LIST(PATH)
      (while(or(vl-string-search "\\" PATH)(vl-string-search "/" PATH))
        (setq PATH (vl-string-subst "\" \"" "\\" PATH))
        (setq PATH (vl-string-subst "\" \"" "/" PATH))
      )     
      (vl-remove-if '(lambda(X)(= X ""))(read (strcat "(\"" PATH "\")")))
  )

und (PATH2LIST(getvar "DWGPREFIX"))  ?
mit den Einträgen von Pfadlist kann man sich ja einen Neuen Directory baum basteln und den mit

(apply 'strcat ..

wieder zu einem Pfad zusammenbauen, wie man will

------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cad4fun
Ehrenmitglied



Sehen Sie sich das Profil von cad4fun an!   Senden Sie eine Private Message an cad4fun  Schreiben Sie einen Gästebucheintrag für cad4fun

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cad4fun 10 Unities + Antwort hilfreich

Auch wenn das Thema eigentlich schon vorbei ist, für solche Sachen verwende ich immer gerne vl-string->list und vl-list->string

Ein 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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz