| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: TXT-Datei einlesen (2643 / mal gelesen)
|
CADMATIC Mitglied
Beiträge: 39 Registriert: 07.02.2011
|
erstellt am: 09. Jun. 2017 08:57 <-- editieren / zitieren --> Unities abgeben:
Hallo, wenn ich eine txt-datei über Read-Line einlese erhalte ich anstatt einer "0" folgendes Zeichen : "0". Kurioserweise tritt dieses Verhalten nicht immer auf. Aus einem "Ä" wird auch ein "ä". Hat jemand ne Idee woher dies Verhalten kommt und wie man es evt. beheben kann ? DANKE Gruß CADMATIC 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: 09. Jun. 2017 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Hallo CADMATIC, klingt irgendwie nach Codepage Geschichten, oder so. Wenn Du mal die TXT Datei oder zumindest ein Stückchen davon zur Verfügung stellen könntest, könnten sich auch andere mal dieser Sache annehmen. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADMATIC Mitglied
Beiträge: 39 Registriert: 07.02.2011
|
erstellt am: 09. Jun. 2017 12:17 <-- editieren / zitieren --> Unities abgeben:
|
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: 09. Jun. 2017 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Also ich konnte das Verhalten nachvollziehen. Habe die Textdatei mit einen Texteditor umkonvertiert (im Test von UTF8 nach ASCII) und konnte damit zumindest das Problem mit der "0" beheben. Aber aus "Ä" wurde dabei "{". Code:
_$ (setq ifile (getfiled "x" "" "txt" 4)) "C:\\Daten\\temp\\TEST.txt" _$ (setq ifh (open ifile "r")) #<file "C:\\Daten\\temp\\TEST.txt"> _$ (setq xz (read-line ifh)) "0;Edelstahl;24;U116;24;U116;11577006;vertikal;60;60;Hättrich;1;1;60;140;" _$ (close ifh) nil _$ (setq ifile (getfiled "x" "" "txt" 4)) "C:\\Daten\\temp\\TESTa.txt" _$ (setq ifh (open ifile "r")) #<file "C:\\Daten\\temp\\TESTa.txt"> _$ (setq xz (read-line ifh)) "0;Edelstahl;24;U116;24;U116;11577006;vertikal;60;60;H{ttrich;1;1;60;140;" _$ (close ifh) nil
Also in der Richtung weitersehen. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Jun. 2017 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
|
CADMATIC Mitglied
Beiträge: 39 Registriert: 07.02.2011
|
erstellt am: 09. Jun. 2017 14:28 <-- editieren / zitieren --> Unities abgeben:
Durch manuelles konvertieren auf ANSI habe ich auch das gewünschte Ergebnis bekommen. Läßt sich das beim Einlesen im Lisp nicht regeln ? Jede Datei manuell zu konvertieren ist irgendwie nicht so prickelnd. Gruß CADMATIC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 09. Jun. 2017 15:46 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
probier das mal Code:
(defun test (server / xml ret) (vl-catch-all-apply (function (lambda () (setq xml (vlax-get-or-create-object "MSXML2.XMLHTTP.3.0")) (vlax-invoke-method xml 'open "GET" server :vlax-false) (vlax-invoke-method xml 'send) (setq ret (vlax-get-property xml 'responsetext)) ) ) ) (if xml (vlax-release-object xml)) ret )
(test "c:\\test.txt") rueckgabe bei mir: "0;Edelstahl;24;U116;24;U116;11577006;vertikal;60;60;Hättrich;1;1;60;140;\r\n1;Metall;14;F04/015;14;F04/015;11577006;vertikal;60;60;Hättrich;1;1;60;140;" gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADMATIC Mitglied
Beiträge: 39 Registriert: 07.02.2011
|
erstellt am: 09. Jun. 2017 15:56 <-- editieren / zitieren --> Unities abgeben:
|
Schachinger Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2041 Registriert: 08.04.2002 AIS2009, PDSU 2012-2015, Plant 3D 2011-2015, NavisWorks 2010-2015, Win7 64bit SP1, Intel Core i7 870, 16 GB RAM, Quadro 2000D
|
erstellt am: 28. Sep. 2018 08:35 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Hallo Forum! Da mein aktuelles Problem eigentlich sehr gut dazu passt greif diesen älteren Thread nochmal auf. Ich muss einen TXT-File mit UTF-8-Kodierung einlesen. Da in dem TXT-File unter anderem cyrillische Schriftzeichen vorhanden sind bekomm ich bei der Konvertierung zur ANSI-Kodierung natürlich nur Kauderwelsch raus. Wie kann ich den UTF-8-Textfile mit Lisp einlesen sodass die cyrillischen Texte auch ankommen? Anbei ein Beispiel... Z.B. aus UTF-8-Kodierung "ИЗДАНИЕ" wird in ANSCI-Kodierung "ИЗДÐÐИЕ"
------------------ mfg Siegfried Schachinger http://www.tbschatz.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 29. Sep. 2018 16:10 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Hallo Siegfried, ich habe in Lisp dazu auch keine Lösung gefunden. Ich habe mir in .Net einen UTF-8-Converter geschrieben, der mir den Dateiinhalt in eine Abfolge von HEX-Codes zurück gibt. Diese können dann ja auch in Lisp in die Texte eingefügt werden. Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schachinger Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2041 Registriert: 08.04.2002
|
erstellt am: 01. Okt. 2018 08:51 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Hallo Holger, Danke für deine Antwort. Sowas in der Art hab ich leider schon befürchtet - und das übersteigt dann meine laienhaften Programmierkentnisse . Wir werdens jetzt anders rum angehen: Bereits im einzulesenden Textfile werden die cyrillischen Schriftzeichen werden durch irgedwelche ANSI-Zeichen (z.B."Ï" anstelle von "И") ersetzt. Somit brauch ich nicht mehr mit UTF-8-Codierung arbeiten. Beim Einlesen der TXT-Datei mit Lisp ersetzte ich die entsprechenden Zeichen wieder zurück auf cyrillische Zeichen. Ich schaffe quasi ein Dummy-Alphabet... Ist zwar nicht wirklich elegant - aber das bekomm ich halt mit meinem Lisp-Halbwissen noch hin ------------------ mfg Siegfried Schachinger http://www.tbschatz.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 01. Okt. 2018 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 01. Okt. 2018 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Hallo Siegfried, ich habe eben mal ein Tool geschrieben, welches dir eine UTF-8 kodierte Datei in Ansi-Hex-Codes konvertiert. Darin wird gleich das \\U+ mit eingefügt, so dass du den aus der konvertierten Datei eingelesenen String gleich in ein AutoCAD-Textobjekt einsetzen kannst. Die UTF82ANSICODE.exe erwartet einen Startparameter, den Dateinamen der UTF-8 Datei (vollständige Pfadangabe). Im Ergebnis wird dann an den Speicherort eine um ein _UC erweiterte txt-Datei geschrieben. Diese kannst du dann in Lisp direkt verwenden. Anbei ebenfalls ein Beispiel, wie man das in Lisp umsetzen könnte. (Ich habe mit findfile gearbeitet, du kannst aber auch den vollständigen Pfad zur exe eingeben.) Bei Fragen ... Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schachinger Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2041 Registriert: 08.04.2002
|
erstellt am: 02. Okt. 2018 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Hallo Holger, Wow starkes Tool! In der Zwischenzeit haben wir die erste Idee mit dem "Dummy-Aphabet" schon mal umgesetzt - damit wir zumindest mal Arbeiten können . Sobald wieder etwas Zeit bleibt möcht ichs dann umstellen dass wir auf dein Tool aufbauen. Grundsätzlich funktioniert meine Lisp-Programm mit den von deinem Tool erstellten Ansi-Files. Einzig der Tabstopp wird innerhalb meines Lisp's nicht mehr als Tabstopp erkannt. Aber das wird dann auch keine große Sache mehr sein. ------------------ mfg Siegfried Schachinger http://www.tbschatz.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 02. Okt. 2018 12:48 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Zitat: Original erstellt von Schachinger: ... Sobald wieder etwas Zeit bleibt möcht ichs dann umstellen dass wir auf dein Tool aufbauen.
Bekommst du das AutoCAD Magazin? Ich habe das Tool so erweitert, dass es direkt als Lisp-Funktion genutzt werden kann. Das Tool wird in einem der nächsten Hefte veröffentlicht, dann kannst du auch solange warten, und hast es bei der Überarbeitung noch einfacher. Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schachinger Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2041 Registriert: 08.04.2002
|
erstellt am: 03. Okt. 2018 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für CADMATIC
Hallo Holger, AutoCAD-Magazin bin ich mir nicht sicher - da muss ich mal bei der GF nachfragen (wenn dann beziehen die das). Wir werdens jetzt aber in Zukunft gleich so ändern das beim Erstellen der TXT-Datei (die kommt aus AVEVA-E3D) cyrillische Schriftzeichen gleich in HEX-Codes umgewandelt werden und wir keine UTF-8-Kodierung mehr brauchen. ------------------ mfg Siegfried Schachinger http://www.tbschatz.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |