![]() |
CSV-Reader. Schnelles lesen von CSV-Dateien
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Ich habe mal eine Klasse geschrieben, die CSV-Dateien einliest und die einzelnen Elemente extrahiert. Dabei werden auch in '"' eingeschlossenen Strings korrekt erkannt. Verwendet wird es so:
Delphi-Quellcode:
Es ist ziemlich flott. Vielleicht kann Jemand etwas damit anfangen.
Var
csvReader : TCSVReader; sData : TFileStream; Begin sData := TFileStream.Create('Sample.CSV',fmOpenRead); csvReader := TCSVReader.Create (sData, ';'); csvReader.First; // Nach Änderung auf Veranlassung von Grenzgaenger nun notwendig. Dank an 'deadcandance' Try While not csvReader.Eof Do Begin For i:=0 to csvReader.ColumnCount - 1 Do Memo.Lines.Add (csvReader.Columns[i]); csvReader.Next; End; Finally csvReader.Free; sData.Free; End; End; Bugreports und Verbesserungsvorschläge sind natürlich erwünscht. Bug: Grenzgaenger hat mich auf einen Fehler in der Behandlung von '""' aufmerksam gemacht. Weiterhin wünschte er sich den Quote-Character als Eigenschaft. Bitte sehr. Erweiterung: ralfschwalbe hätte gern, das die Klasse auch mit UNIX-Umbrüchen umgehen kann. Bitte sehr. Erweiterung: Noch besser: Man kann nun das EOL-Zeichen und die Länge selbst angeben (z.B. für Unix #10 und 1, Windows: #13 und 2) Änderung: Laut grenzgaenger hat der Aufruf von 'First' im Konstruktor nix zu suchen. Recht hat er! Bug: Kater Karlo hat einen Fehler im Konstruktor entdeckt, der bei Streams auftritt, deren Position>0 ist. Weiterhin ist ein überflüssiges privates Feld entfernt worden. |
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Hi,
super Sache! Aber ein Hinweis aus eigener Erfahrung: Du solltest unbedingt noch bedenken, dass es auch csv-Dateien mit UNIX Zeilenumbrüchen gibt! Nicht das irgendwann mal was "schiefgeht"! |
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Hi ralf,
UNIX-Zeilenumbrüche sind nur ein CR, richtig? Das sollte kein Problem sein. Neue Version oben |
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Hi alzaimar,
nimm LF - ist besser so. Freundliche Grüße |
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Hallo Marabu. Na gut, dann muss ich ja nochmal nachdenken :freak:
|
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
hallo alzheimer,
vielleicht solltest du von den optionen her MAC, Unix und DOS unterstützen ... die trennzeichen sind wie folgt #13, #10, #13#10... und für kümimüsis #10#13 ;-), welche es eben verwechseln ... :-) grüsse GG |
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Ein CSV Feldtrennzeichen kann ',' oder ';' sein.
Verarbeitest du beides oder nur eins von beiden? U.u. wäre es dann gut als property das Trennzeichen mit angeben zu können. |
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Schau Dir mal den constructor an:
Delphi-Quellcode:
Constructor TCSVReader.Create(aStream: TStream; aDelimiter: Char);
Zitat:
|
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Zitat:
|
Re: CSV-Reader. Schnelles lesen von CSV-Dateien
Naja, vielleicht machen das manche Programme so mit dem ListSeparator. Aber die ganze Geschichte steht
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr. |
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-2025 by Thomas Breitkreuz