| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: vl-string-position kaputt (606 / mal gelesen)
|
Frank88 Mitglied
Beiträge: 156 Registriert: 11.10.2004 AutoCAD 2019/C3D
|
erstellt am: 11. Mrz. 2022 16:03 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 11. Mrz. 2022 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 11. Mrz. 2022 16:23 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
|
Frank88 Mitglied
Beiträge: 156 Registriert: 11.10.2004 AutoCAD 2019/C3D
|
erstellt am: 11. Mrz. 2022 18:07 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 12. Mrz. 2022 07:09 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
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
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 12. Mrz. 2022 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
|
spider_dd Mitglied
Beiträge: 1144 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 / zitieren --> Unities abgeben: Nur für Frank88
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
Beiträge: 156 Registriert: 11.10.2004 AutoCAD 2019/C3D
|
erstellt am: 18. Mrz. 2022 17:59 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 19. Mrz. 2022 08:33 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
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
Beiträge: 1144 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 / zitieren --> Unities abgeben: Nur für Frank88
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
Beiträge: 156 Registriert: 11.10.2004 AutoCAD 2019/C3D
|
erstellt am: 21. Mrz. 2022 08:49 <-- editieren / zitieren --> Unities abgeben:
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 |