Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  vl-string-position kaputt

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:  vl-string-position kaputt (576 mal gelesen)
Frank88
Mitglied



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

Beiträge: 153
Registriert: 11.10.2004

AutoCAD 2019/C3D

erstellt am: 11. Mrz. 2022 16:03    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

Liebe Gemeinde

Kann es sein, dass vl-string-position kein Tab mehr erkennt?

Code:

Befehl: (setq A "1 2689819.955 1282112.134 446.979")
"1 2689819.955 1282112.134 446.979"

Befehl: (setq B (vl-string-position 9 A))
nil

Befehl: (setq A "123 456")
"123 456"

Befehl: (setq B (vl-string-position 9 A))
nil

Befehl: (princ (vl-string-position 9 A))
nilnil

Befehl: (vl-string-position 9 A)
nil


Das erste ist eine mit STRG+C aus einer Datei kopierte Zeile, der Rest sind mit zunehmender Verzweiflung und per Hand eingetippte Versuche.

Ich versuche, Zeilen von Dateien aufzusplitten, deren Koordinatenwerte per Tabulator getrennt sind. Eigentlich sollte das so funktionieren, oder?

Grüsse
Frank

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 11. Mrz. 2022 16:18    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 Frank88 10 Unities + Antwort hilfreich

Und so ?
(setq A "1 2689819.955 1282112.134 446.979")
(setq B (vl-string-position (ascii "9") A))

------------------
Gruß Wolfgang

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 11. Mrz. 2022 16:23    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 Frank88 10 Unities + Antwort hilfreich

Sorry du meinst mit Tab Leerzeichen das ist 32

------------------
Gruß Wolfgang

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

Frank88
Mitglied



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

Beiträge: 153
Registriert: 11.10.2004

AutoCAD 2019/C3D

erstellt am: 11. Mrz. 2022 18:07    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

Hallo Wolfgang,

danke für Deine Antworten.
Ich meine tatsächlich Tabulator, ASCII-Code 9. Den Versuch mit (ascii "...hier steht jetzt das TAB mit Tastatur eingegeben...") hatte ich schon unternommen - ging auch nicht. Auf die von Dir vorgeschlagene Art uns Weise erscheint es mir nicht sinnvoll, werde ich aber trotzdem ausprobieren.

Grüsse,
Frank

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 12. Mrz. 2022 07:09    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 Frank88 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Frank88:
....
Das erste ist eine mit STRG+C aus einer Datei kopierte Zeile,....
Grüsse
Frank


Dann ist das Trennzeichen in der Datei möglicherweise nicht ASCII 9 (Tab) wie angenommen,  sondern UTF codiert oder eben ein anderes Zeichen. Dazu würde ich mir die Textdatei zunächst mit einem HEX Editor ansehen.

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 12. Mrz. 2022 08:19    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 Frank88 10 Unities + Antwort hilfreich

Entnimm doch einfach das Zeichen was (vl-string->list "1 2689819.955 1282112.134 446.979")
an dieser erstelle ausgibt, dann hast du es.

------------------
Gruß Wolfgang

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 14. Mrz. 2022 08:09    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 Frank88 10 Unities + Antwort hilfreich

Hallo Frank,
um das mal nachzuvollziehen, habe ich es auch mal ausprobiert.
Und siehe: Die Tabtaste in der Befehlszeile eingesetzt, liefert ein Leerzeichen (Char 32)

Code:
Befehl: (setq A "ff gg ww")  ; mit Tab-Taste eingegeben
"ff gg ww"
(setq B (vl-string-position 9 A))
nil
Befehl: (ascii " ")  ; mit Tab-Taste eingegeben
32

Hier must Du explizit ein Tab übergeben (char 9)

Code:
Befehl: (setq A (strcat "ff" (chr 9) "gg" (chr 9) "ww"))
"ff\tgg\tww"
Befehl: (vl-string-position 9 A)
2

Jetzt wird wirklich Deine Datentabelle erforderlich, um weiter zu testen.

Gruß
Thomas

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

Frank88
Mitglied



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

Beiträge: 153
Registriert: 11.10.2004

AutoCAD 2019/C3D

erstellt am: 18. Mrz. 2022 17:59    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


Test_BoPL.txt

 
Hallo zusammen

Es hat leider ein wenig gedauert, bis ich mich wieder mit meinem Problem befassen konnte, ich danke Euch aber schon mal allen für die Versuche mir zu helfen.

Den Tipp, das Tab-Zeichen aus der Datei zu kopieren und in Anführungszeichen als Suchstring zu benutzen führt zu

Code:
; Fehler: Fehlerhafter Argumenttyp: fixnump: "\t"

Dafür habe ich jetzt die Textdatei angehängt.
Leider habe ich auf meinem Arbeitsrechner keinen  Editor, der mir die Codierung anzeigt. Die Datei wird so von XL erzeugt, mit der Option "Speichern unter... - Text (Tabstopp getrennt)(*.txt)". Da würde ich eigentlich keine Schwierigkeiten bei der ASCII-Codierung erwarten.

Grüsse,
Frank

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 19. Mrz. 2022 08:33    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 Frank88 10 Unities + Antwort hilfreich

Keine Ahnung wo es bei dir klemmt.
Aber teste das mal.
Code:
(progn(and (findfile (setq Pfad"C:\\Lisp\\Test_BoPL.txt"))
    (setq file (open Pfad "r"))
)
  (while (setq TXT-Line (read-line file))
    (terpri)
    (princ TXT-Line)
    (terpri)
    (princ (vl-string->list TXT-Line))
    (terpri)
    (princ (vl-string-position 9 TXT-Line))
  )
  (close file))

------------------
Gruß Wolfgang

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 21. Mrz. 2022 07:57    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 Frank88 10 Unities + Antwort hilfreich

Hallo Frank,

ich habe auch mal weiter getestet. Also die Datei ist OK, sauber TAB getrennt.

Strg+C aus der Datei und Einfügen in die Befehlszeile macht aus den Tab dann Leerzeichen, warum auch immer.

Code:
Befehl: (setq aa "1 2689819.955 1282112.134 446.979")
"1 2689819.955 1282112.134 446.979"    ;; Hier sieht man die Leerzeichen
Befehl: (vl-string-position 9 aa)
nil

Öffen per Lisp funktioniert einwandfrei.

Code:
(setq file (getfiled "test" "c:\downloads" "txt" 4))
"C:\\Downloads\\Test_BoPL.txt"
Befehl: (setq ff (open file "r"))
#<file "C:\\Downloads\\Test_BoPL.txt">
Befehl: (setq zz (read-line ff))
"1\t2689819.955\t1282112.134\t446.979"  ;; Hier sieht man die TAB  (\t)
Befehl: (vl-string-position 9 zz)
1

Also im Programmlauf sollte es klappen, wo auch immer beim einfachen Kopieren/Einfügen die Tab verloren gehen.

HTH
Gruß
Thomas

ps. ein Editor, der Kodierung anzeigt ist z. B. notepad++ (freie Software)
ps2. Datenbereiche in Excel markiert, kopiert und in das Windows-Notepad eingefügt, trennt die Daten auch mit TAB.

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

Frank88
Mitglied



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

Beiträge: 153
Registriert: 11.10.2004

AutoCAD 2019/C3D

erstellt am: 21. Mrz. 2022 08:49    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

Hallo zusammen,

Vielen Dank für Eure Tipps.

Ja, nicht alles, was nicht funktioniert, liegt am unerklärlichen Verhalten der Maschine vor einem...

Hier sind zwei Dinge zusammen gekommen: Ein Fehler im Programm (eigentlich das Naheliegende) und das Verhalten der Befehlszeile in Bezug auf  Tabulator/Leerzeichen.

Weil an der Befehlszeile auch nichts funktioniert hat, wie es sollte, habe ich mir meinen Code gar nicht mehr genauer angeschaut. Hätte ich mal tun sollen!

Grüsse
Frank

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