Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   CSV / ASCII-Delimited (https://www.delphipraxis.net/184713-csv-ascii-delimited.html)

Sir Rufo 16. Apr 2015 15:16

AW: CSV / ASCII-Delimited
 
Zitat:

Zitat von p80286 (Beitrag 1298000)
@Sir Rufo

Interpretationsfähig ist eben das
Zitat:

enclosed in double-quotes
.
Ich verstehe das als "wenn Anführungszeichen genutzt werden, dann befindet sich der vollständige Feldinhalt innerhalb der Anführungszeichen"
Code:
field = (escaped / non-escaped)

   escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE

   non-escaped = *TEXTDATA
und dann sollte ich (Leer-)Zeichen zwischen Anführungszeichen und Feldtrenner ignorieren.

IMHO ist das eindeutig. Wenn Quotes, dann steht der Wert innerhalb der Quotes.
Diese Leerzeichen sind nicht zulässig und somit streng genommen ein Fehler in der Datenstruktur => Schrott

Wenn man gnädig ist, dann ignoriert man diese einfach.
Zitat:

Zitat von taveuni (Beitrag 1298005)
Trotzdem: Wo liegt das eigentliche Problem? Diese Datei ist mit einer TStringlist ja einfach zu parsen.

Mit einer
Delphi-Quellcode:
TStringList
kann ich nicht jede RFC4180-konforme Datei verarbeiten. Also kann ich das auch gleich wieder vergessen.

BadenPower 16. Apr 2015 15:19

AW: CSV / ASCII-Delimited
 
Zitat:

Zitat von taveuni (Beitrag 1298005)
Trotzdem: Wo liegt das eigentliche Problem? Diese Datei ist mit einer TStringlist ja einfach zu parsen.

Das Problem des TE ist, dass er nicht weis, wie er das Leerzeichen behandeln soll, welches vor dem Zeilenumbruch manchmal vorhanden ist und mnachmal eben nicht.

Ignorieren (löschen) oder als Feldwert anzeigen.

milos 16. Apr 2015 15:21

AW: CSV / ASCII-Delimited
 
Zitat:

Zitat von Sir Rufo (Beitrag 1298002)
Zitat:

Zitat von milos (Beitrag 1297995)
Zitat:

Zitat von Sir Rufo (Beitrag 1297991)
@milos

Wenn es Unstimmigkeiten / unterschiedliche Lesarten der RFC4180 gibt, wie willst du dann einen Code schreiben, der exakt nach RFC4180 agiert?

Es geht hier nicht um irgendeinen Code sondern um das was die RFC4180 aussagt und ob die Daten nun RFC4180 konform sind oder nicht.

Wenn ich mit jemandem ausmache, dass er mir die Daten nach RFC4180 liefern soll, dann haue ich dem das so lange um die Ohren, bis es so ankommt wie RFC4180 das vorschreibt. Dazu müssen aber alle Beteiligten die RFC4180 gleich verstehen/lesen

Hab ich wohl überlesen, der Code von mir liest die Daten einfach so aus wie sie da sind, ohne ein RF-Ding zu beachten. Hab da wohl einfach drauf los ge-:coder:

Freundliche Grüsse

Jupp, denn dein Code ist nicht RFC4180 konform.

Versuch einfach mal diese Daten zu verarbeiten:
Code:
1,"Das ist
eine Zeile"

Mach aus dem TStrings ein String, bau den Reader bisschen um und schon ist dieses Problem auch gelöst :P
Und wie gesagt, hab auch gar nicht darauf geachtet es RFC4180 konform zu machen, sollte lediglich das auslesen ermöglichen.

Sir Rufo 16. Apr 2015 15:22

AW: CSV / ASCII-Delimited
 
Zitat:

Zitat von milos (Beitrag 1298012)
Mach aus dem TStrings ein String, bau den Reader bisschen um und schon ist dieses Problem auch gelöst :P
Und wie gesagt, hab auch gar nicht darauf geachtet es RFC4180 konform zu machen, sollte lediglich das auslesen ermöglichen.

Du brauchst nur die Forensuche bemühen, da findest du einen RFC4180-konformen CSV-Reader von mir ... ;)

DeddyH 16. Apr 2015 15:32

AW: CSV / ASCII-Delimited
 
Gab es nicht auch einen von alzaimar? Mir war da so.

milos 16. Apr 2015 16:01

AW: CSV / ASCII-Delimited
 
Zitat:

Zitat von DeddyH (Beitrag 1298015)
Gab es nicht auch einen von alzaimar? Mir war da so.

Ja, war der den ich auf die schnelle gefunden habe ^^
http://www.delphipraxis.net/110025-c...v-dateien.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz