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 3 von 4     123 4      
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 22. Feb 2009, 21:38
Du müsstest die Unit noch einbinden ...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
ekoplayer

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

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

  Alt 23. Feb 2009, 06:57
also ich speicher die Datei csCSV.pas ab und dann erstelle ich ne neue Unit? und unter welchen Namen speicher ich die dann ab bzw. was muss ich daran noc ändern?
  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 23. Feb 2009, 07:21
Dir scheinen die Grundlagen der Programmierung mit Delphi/Pascal/ObjectPascal zu fehlen. Vielleicht wäre ein Crashkurs Delphi etwas für Dich. Danach kannst Du dir die Frage selbst beantworten. So würde das nichts werden.

Du kannst Dir auch die Beispiele anschauen, die bei Delphi dabei sind. Dort werden auch Units verwendet ("verwenden" englisch: 'to use' )
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#4

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

  Alt 7. Aug 2009, 09:42
Woran könnte es liegen, wenn ich statt des Inhalts der CSV nur rechteckige Kästchen einlesen kann?

Sowas (mit den Editor geöffnet)
Zitat:
132.187.93.175;255.255.255.0;448;8;0;0;005_MT_Schu l;;cache://global/deploy.shtml "HMZ_005_MT_Schul_2-1.ini";
wird im Memo nur als Kästchen angezeigt, hier im Forum mit japanischen Schriftzeichen.

Zitat:
灩摡牤渻瑥慭歳活摯汥漻瑰潩獮瀻數潭敤氻捯潫瑵朻潲灵愻瑵摨浯楡㭮瑳牡灴条㭥敲潳畬楴湯瀻慬晴牯㭭楦敬敳癲 牥昻汩獥牥敶扲歡爻浥瑯捥湯潳敬昻汩獥牥敶灲牯㭴敲潭整潣獮汯灥牯㭴敳楲污画極㭤睨摡牤猻慴畴㭳潭敤㭬慃档 卥穩㭥汃慥䍲捡敨湏散䌻牵敲瑮瑓瑡੥㌱⸲㠱⸷㌹ㄮ㔷㈻㔵㈮㔵㈮㔵〮㐻㠴㠻〻〻〻㔰䵟彔捓畨㭬挻捡敨⼺术潬慢 ⽬敤汰祯献瑨汭∠䵈彚〰張呍卟档汵㉟ㄭ椮楮㬢㈱〸ㅸ㈰㬴䅉㡸㬶⸰⸰⸰㬰⸰⸰⸰㬰⸰⸰⸰㬰㈭㈱㌳〻夻䍋こ㄰㐲 㬵䈰㘷䄷䔴㑁ㄴㄱ䍄㕂䘵〰㤱㤹㈰㐹㜶〻㄰㤹〹㤲㘴㬷协䈠住ⱔ传⁎䥄䭓䔻偓䥒位䌠㜵〲ㄻ〵〰昻污敳主坅䠠协੔ ㌱⸲㠱⸷㌹ㄮ㘷㈻㔵㈮㔵㈮㔵〮㐻㠴㠻〻〻〻㔰䵟彔捓畨㭬挻捡敨⼺术潬慢⽬敤汰祯献瑨汭∠䵈彚〰張呍卟档汵㉟ ㄭ椮楮㬢㈱〸ㅸ㈰㬴䅉㡸㬶⸰⸰⸰㬰⸰⸰⸰㬰⸰⸰⸰㬰㈭㈱㌳〻夻䍋こ㄰㐲㬲䕂䅂ㄴ䔹㑁㘴ㄱ䍄䘹
Verwendet mit BDS 2009

Das CSV wurde mit einem Webinterface erstellt und gespeicht, leider bekomme ich auch nur Kästchen, wenn ich mit Notepad eine test.csv erstelle und selbst mit Daten fülle.
Codito, ergo sum. - I code therefore I am
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

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

  Alt 7. Aug 2009, 10:34
Zitat von Der_Ventilator:
Woran könnte es liegen, wenn ich statt des Inhalts der CSV nur rechteckige Kästchen einlesen kann?

Sowas (mit den Editor geöffnet)
Zitat:
132.187.93.175;255.255.255.0;448;8;0;0;005_MT_Schu l;;cache://global/deploy.shtml "HMZ_005_MT_Schul_2-1.ini";
wird im Memo nur als Kästchen angezeigt, hier im Forum mit japanischen Schriftzeichen.

Zitat:
灩摡牤渻瑥慭歳活摯汥漻瑰潩獮瀻數潭敤氻捯潫瑵朻潲灵愻瑵摨浯楡㭮瑳牡灴条㭥敲潳畬楴湯瀻慬晴牯㭭楦敬敳癲 牥昻汩獥牥敶扲歡爻浥瑯捥湯潳敬昻汩獥牥敶灲牯㭴敲潭整潣獮汯灥牯㭴敳楲污画極㭤睨摡牤猻慴畴㭳潭敤㭬慃档 卥穩㭥汃慥䍲捡敨湏散䌻牵敲瑮瑓瑡੥㌱⸲㠱⸷㌹ㄮ㔷㈻㔵㈮㔵㈮㔵〮㐻㠴㠻〻〻〻㔰䵟彔捓畨㭬挻捡敨⼺术潬慢 ⽬敤汰祯献瑨汭∠䵈彚〰張呍卟档汵㉟ㄭ椮楮㬢㈱〸ㅸ㈰㬴䅉㡸㬶⸰⸰⸰㬰⸰⸰⸰㬰⸰⸰⸰㬰㈭㈱㌳〻夻䍋こ㄰㐲 㬵䈰㘷䄷䔴㑁ㄴㄱ䍄㕂䘵〰㤱㤹㈰㐹㜶〻㄰㤹〹㤲㘴㬷协䈠住ⱔ传⁎䥄䭓䔻偓䥒位䌠㜵〲ㄻ〵〰昻污敳主坅䠠协੔ ㌱⸲㠱⸷㌹ㄮ㘷㈻㔵㈮㔵㈮㔵〮㐻㠴㠻〻〻〻㔰䵟彔捓畨㭬挻捡敨⼺术潬慢⽬敤汰祯献瑨汭∠䵈彚〰張呍卟档汵㉟ ㄭ椮楮㬢㈱〸ㅸ㈰㬴䅉㡸㬶⸰⸰⸰㬰⸰⸰⸰㬰⸰⸰⸰㬰㈭㈱㌳〻夻䍋こ㄰㐲㬲䕂䅂ㄴ䔹㑁㘴ㄱ䍄䘹
Verwendet mit BDS 2009

Das CSV wurde mit einem Webinterface erstellt und gespeicht, leider bekomme ich auch nur Kästchen, wenn ich mit Notepad eine test.csv erstelle und selbst mit Daten fülle.
Das Zauberwort Heist Unicode
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#6

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

  Alt 7. Aug 2009, 12:17
Heist das, der normale Windowseditor speichert unter Windows XP im Unicodeformat, mit dem ein Memo nix anfangen kann?
Codito, ergo sum. - I code therefore I am
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

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

  Alt 7. Aug 2009, 13:07
Zitat von Der_Ventilator:
Heist das, der normale Windowseditor speichert unter Windows XP im Unicodeformat, mit dem ein Memo nix anfangen kann?
Neine D2009 scheint das aber zu meinen und liest es im Unicodeformat ein und dann kommt soein mist dabei raus
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
BoolString

Registriert seit: 2. Feb 2009
Ort: Varel
70 Beiträge
 
RAD-Studio 2009 Pro
 
#8

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

  Alt 7. Aug 2009, 22:05
Sehr cool! Ich muss viel mit CSV Dateien arbeiten (wobei wir die inzwischen als Char-Separated-Values betiteln Ich hab inzwischen viele Routinen geschrieben, die immer leichte Varianten und Abweichungen prozessieren.

Was du vielleicht noch überarbeiten soltest wären:
- Property ab welcher Zeile die eigentlichen CSV Daten anfangen (häufig gibt es einen Header, der komplett anders aufgebaut ist und davor steht).
- eine Comment Property, die alle Zeilen enthält, die nicht als Daten eingelesen werden sollen (z.B. die Zeilen des Headers).
- Property für die Anzahl der Elemente pro Zeile (manchmal verrutschen Werte, wenn Messwerte nicht vorliegen, was zu Problemen führt, wenn man alles in eine Tabelle oder für weitere Berechnungen in eine Matrix schreibt).
- Für manche Anwendungen ist es interessant, bei der internen Verarbeitung die Delimiter am Anfang einer Zeile zu löschen.
- Für andere Anwendungen ist es interessant, mehrere aufeinanderfolgende Delimiter wie einen einzigen zu interpretieren.
- eine Möglichkeit eine Zeile anzugeben, welche Spaltenüberschriften trägt (diese sind häufig anders zu prozessieren als die darauffolgenden Daten); quasi die Column Headers.
- evtl. tatsächlich eine Option zur Unicode-Behandlung.


Bin ja echt gerade am Überlegen, ob ich meine Routinen nicht endlich mal auf eine schicke Klasse umschreiben sollte (man bastelt ja immer so seine Provisorien und die halten dann ewig). Dein Ansatz würde sich mit einigen Anpassungen sehr schön eignen!

Liebe Grüße aus ><)))°> Town

Jan
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

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

  Alt 8. Aug 2009, 08:21
Hallo Jan,

Ich halte deine Vorschläge für nicht unbedingt sinnvoll, denn sie lassen sich bereits durch die vorhandenen Eigenschaften implementieren bzw. gehören imho nicht in die Klasse:
Du kannst zum Überspringen der ersten Zeilen die 'Next' Methode ein paar mal aufrufen. Weiterhin gibt dir die Eigenschaft 'ColumnCount' für jede Zeile die Anzahl der Zellen/Spalten zurück.
Die Prozessierung bzw. Behandlung des Inhaltes (=Interpretation) obliegt nicht der CSV-Klasse, sondern der benutzenden Anwendung. Die Darstellung als Matrix bzw. Dataset müsste diese Funktionalitäten bereitstellen: Hier geht es nur um das schnelle und korrekte Einlesen von Daten im CSV-Format.

Einzig die Unicode-Behandlung wäre eine Option. Wobei es dann sinnvoller wäre, eine neue Klasse dafür zu implementieren. So wie ich das sehe, müssten die String/Var/PChar-Variablendeklarationen durch ihre Unicode-Pendants ersetzt und an der Stelle 'GetMem' die Anzahl mit 2 multipliziert werden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
BoolString

Registriert seit: 2. Feb 2009
Ort: Varel
70 Beiträge
 
RAD-Studio 2009 Pro
 
#10

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

  Alt 9. Aug 2009, 23:35
Ich habe mir deinen Code mal etwas genauer angesehen. Mit einigen Punkten hast du recht. Das lag wohl an meiner ersten, eher oberflächlichen, Inspektion Die Interpretation war natürlich nicht Teil meines Vorschlags. Das habe ich wohl etwas Missverständlich ausgedrückt. Ist klar, daß sich jede Anwendung die Daten dann in ihr eigenes Datenhandlingkonstrukt stopfen muss.

Bezüglich der 'Lösche Delimiter am Anfang' und 'Mehrere aufeinanderfolgende als einen Delimiter interpretieren' ermöglicht es gleichzeitig Datenfiles mit fester Spaltenbreite zu importieren. Hier werden ja die ungenutzten Zeichen meist mit Leerzeichen aufgefüllt. Durch die angesprochenen Properties könnte man die dann mit verarbeiten (Deli:=SPACE; LöscheAnfangsDelis:=True; MuliDeliAsOne:=True).
Ist aber nur ein Vorschlag; letztlich hast du natürlich recht, daß dies nicht CSV Dateien im eigentlichen Sinn sind. Es wäre aber eine Option diese gleich mit zu 'erschlagen' und sicherlich eine Aufwertung deines Codes. Ist ja aber nur ein Vorschlag; du hast ja danach gefragt

Liebe Grüße

Jan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:27 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