AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte CSV-Reader. Schnelles lesen von CSV-Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

CSV-Reader. Schnelles lesen von CSV-Dateien

Ein Thema von alzaimar · begonnen am 11. Mär 2008 · letzter Beitrag vom 28. Nov 2017
Antwort Antwort
Seite 2 von 4     12 34      
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 13. Mär 2008, 10:33
Zitat von Union:
Naja, vielleicht machen das manche Programme so mit dem ListSeparator.
EXCEL macht das so... Aber echt interessant (auch der Wiki-Artikel). Ich dachte, CSV hätte sich MS 1923 ausgedacht. So lange kenn ich das jedenfalls (ungefähr, mein Gedächtnis )
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 13. Mär 2008, 10:40
Jedenfalls ist Deine Lösung gut und praktikabel. Eigentlich geht es ja nicht um die Therorie, sondern dass man es für bestehende "CSV"-Definitionen verwenden kann. Ich bin auch erst vor kurzem darauf gekommen, als ich zum Debuggen eine "CSV" mit Semikolon ausgegeben habe und der Microsoft LogParser das Format nicht erkannte. Die nennen das dann TSV mit Delimiter =";".
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 13. Mär 2008, 10:45
Zitat von Union:
Jedenfalls ist Deine Lösung gut und praktikabel.

Zitat von Union:
Die nennen das dann TSV mit Delimiter =";".
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 13. Mär 2008, 11:26
Und wenn Du noch
SetString(Result, spFirst, spLen); ersetzt mit
Delphi-Quellcode:
SetLength(result, spLen);
Move(spFirst^, result[1], spLen);
dann wird das auch schnell
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
deadcantdance

Registriert seit: 25. Feb 2008
81 Beiträge
 
Delphi 2007 Professional
 
#5

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 12. Dez 2008, 15:02
Kleiner Hinweis. Das o.g. Bespiel funktioniert so nicht ganz.

Beim ersten Durchlauf ist ColumnCount = 0, erst nach dem Aufruf von csvReader.Next wird ColumnCount gesetzt.

Sollte doch dann eigentlich so sein:

Delphi-Quellcode:
Try
  if not csvReader.Eof then
    csvReader.Next;
  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;
Ansonsten,

Viele Grüße,
deadcantdance
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 14. Dez 2008, 20:50
In der kleinen Demo fehlt der Aufruf von 'csvReader.First'. Habe ich nachgetragen (siehe Eingangspost).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Kater Karlo

Registriert seit: 30. Jan 2005
Ort: Wennigsen
3 Beiträge
 
Delphi 2010 Professional
 
#7

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 7. Jan 2009, 12:29

Hi,

ggf. ist es sinnvoll im Constructor vor dem Read die Position des zu lesenden Stream auf Null zu setzen.
Es sei denn es ist beabsichtigt erst ab der aktuellen Stelle einzulesen.

Die Variable fReader: TReader; kann weggelassen werden.

Gruss Kater Karlo
Gestern standen wir noch vorm Abgrund.
Heute sind wir schon um einesn Schritt weiter!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 7. Jan 2009, 12:54
Hallo Kater Karlo,

Es ist üblich, das der Aufrufer den Stream an die geeignete Stelle setzt, das muss er bei Verwendung anderer Komponenten (z.B. Crypter/Packer-Streams) auch selbst machen. Bei Instantiierung eines TFileStreams ist die Position eh bei 0.

Bezüglich deines Einwands mit dem Buffer fällt auf, das im Konstruktor ein kleine Ungenauigkeit auftritt, wenn die Position des Streams > 0 ist (wie du richtig bemerkt hast). Das sollte nun behoben sein.

Danke für die Anregungen
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Kater Karlo

Registriert seit: 30. Jan 2005
Ort: Wennigsen
3 Beiträge
 
Delphi 2010 Professional
 
#9

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 7. Jan 2009, 14:46
Hallo alzaimar,

ich hätte da noch einige Anregungen:

- Als Eigenschaft den Index der aktuellen Zeile
- Als Eigenschaft die aktuelle Zeile als String
- Veröffentlichen der Column-Information TStringPos

Extended:
- Erkennen von Kommentarzeilen (Zeile beginnt mit # oder über eine Eigenschaft bekannt zugebene Zeichenfolge)

MfG

Kater Karlo
Gestern standen wir noch vorm Abgrund.
Heute sind wir schon um einesn Schritt weiter!
  Mit Zitat antworten Zitat
ekoplayer

Registriert seit: 19. Feb 2009
22 Beiträge
 
#10

Re: CSV-Reader. Schnelles lesen von CSV-Dateien

  Alt 22. Feb 2009, 21:04
Kann mir einer vielleicht sagen wie ich beide die Datei zum laufen kriege?

Wenn ich sie abspeichern will sagt er mir immer Declaration of class TForm1 is missing or incorrect.

Und bei der zweiten Datei hinterlegt er das

Delphi-Quellcode:
  
csvReader : TCSVReader;
sData : TFileStream;
rot wenn ich es Compilieren will. kann mir wer helfen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 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