| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: Welche ASCII-Codes setzen read-line auf nil? (2962 mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 10. Jun. 2006 22:16 <-- editieren / zitieren --> Unities abgeben:         
Guten Abend ich muss mit read-line abstruse Textdateien einlesen, die zur Unterhaltung der Anwesenden immer wieder mitten drin mit ASCII-Codes unter 32 - somit diversen Steuerzeichen - versehen sind. Nun habe ich gemerkt, dass read-line manche dieser Zeichen problemlos liest und weiterverarbeitet, bei anderen aber ein EOF oder irgendetwas Böses versteht und einfach die nächsten read-line-Abläufe immer mit "nil" beendet und somit die Datei nicht mehr weiterliest. Gibt es irgendwo eine Liste oder Hinweise, welche Sonderzeichen schon gelesen werden und welche nicht? Schönen Sonntag Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
    
 Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 11. Jun. 2006 00:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Hallo Peter, hättest Du die folgenden Suchwörter eingegeben: "ascii zeichensatz bedeutung der Steuerzeichen" hättest die folgenden Seiten gefunden: http://de.wikipedia.org/wiki/ASCII http://www.soziologie.uni-halle.de/unger/scripts/workshop_internet/ref_char_646.html Grundsätzlich ist es so, daß Du alles unter 32 meiden sollst, denn das sind Steuerzeichen und Steuerzeichen steuern etwas. Du willst aber nichts steuern. Welche Funktionen die einzelnen Zeichen haben, ist auf den oben genannten Seiten beschrieben. Nun kommt Dein Problem: Wie wegfiltern? Dazu hat Axel schöne und brauchbare Beispiele und die findest Du hier: http://www.autolisp.mapcar.net/strings.html Da findest Du die folgenden Themen: * Bereinigen von Zeichenketten: Entfernen oder Hinzufügen von Leerstellen, white space usw. * Verändern von Zeichenketten: Suchen und Ersetzen von Teilen und Ähnliches * Aufteilen und Zusammenfügen: Tokenizer (Teilzeichenketten als Listen verarbeiten) und wieder zusammenfügen Nun wünsche ich Dir auch einen schönen Sonntag. Gruß Theodor Schönwald
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Niggemann Mitglied
 
 Beiträge: 170 Registriert: 31.10.2003 Win 98 Se, ACAD 2004, XP Prof, ACAD 2004 und ACAD 2010
|
erstellt am: 11. Jun. 2006 20:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Hallo Peter Das Problem kenne ich sehr gut Hat mir vor vielen Jahren viel Ärger bereitet. Lisp kann nur wenige Sonderzeichen nicht lesen, ich habe das Problem so gelöst: (setq LESEN1 (getfiled "Datatext Datei Wählen" "C:/TEST/" "*" 4)) (setq L1 (open LESEN1 "r")) (setq REIHE T) (setq TEMP1 nil ZEICHEN nil ) (while REIHE ;eine Zeile Lesen aus alter gewohnheit (setq ZEICHEN (read-char L1)) (if (or (= ZEICHEN nil)(= (chr ZEICHEN) "\n")(= (chr ZEICHEN) "\r")) (setq REIHE nil ) (progn (setq TEMP1 (cons (chr ZEICHEN) TEMP1)) );ende progn );ende if );ende while REIHE (setq L1 (close L1)) (setq TEMP1 (reverse TEMP1)) wenn du "read-char" statt "read-line" nimmst klappt es. Von der Zeit spielt es keine Rolle, ich zieh mir 300000 Zeilen Ascii-Text oder ca. 30 MB in 2-3 Minuten rein. Wenn ich micht Recht erinnere war es carriage return oder linefield (LF, 010) viel Spas noch Gruß Niggemann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 12. Jun. 2006 18:37 <-- editieren / zitieren --> Unities abgeben:         
@Theodor: Danke - aber die beiden ersten Links sind mir zu wenig auf Lisp bezogen. Vor allem die konkrete Auswirkung auf read-line ist etwas untervertreten... @Niggemann: Danke - klingt gut. Da aber der ASCII-Produzent zum Glück seit heute den Müll abfangen kann, ist derzeit keine Anpassung mehr nötig. Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) [Diese Nachricht wurde von Peter2 am 12. Jun. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |