AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte CSVViewer - Zum Betrachten von CSV-Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

CSVViewer - Zum Betrachten von CSV-Dateien

Ein Thema von Luckie · begonnen am 14. Feb 2011 · letzter Beitrag vom 12. Nov 2013
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 14. Feb 2011, 20:18
Leider kann der CSVViewer nicht alle CSV-Dateien nach RFC 4180 öffnen

Folgendes ist nach RFC ein gültige CSV-Datei
Code:
ID;TEXT
1;Test
2;"Test"
3;"Test""Test"
4;"Test
Test
Test"
5;Last
und sollte folgendes ergeben
Code:
ID TEXT
 1 Test
 2 Test
 3 Test"Test
 4 Test
   Test
   Test
 5 Last
Wenn man mit dem "Microsoft Text-Treiber" die CSV öffnet, dann wird die auch korrekt verarbeitet
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 14. Feb 2011, 20:23
Was macht mein Programm daraus?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 14. Feb 2011, 20:33
Was macht mein Programm daraus?
sowas
Code:
ID    TEXT
===== =========
1     Test
2     Test
3     Test"Test
4     Tes
Test
Test"
5     Last
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 14. Feb 2011, 20:36
Dann ist das ein Bug von Delphi, dass sich TStringList nicht an das RFC hält. Lösung wäre, die Datei selber zu parsen, aber dazu war ich zu faul. Allerdings, man könnte noch mal probieren, was Explode daraus macht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 14. Feb 2011, 20:39
Dann ist das ein Bug von Delphi, dass sich TStringList nicht an das RFC hält. Lösung wäre, die Datei selber zu parsen, aber dazu war ich zu faul. Allerdings, man könnte noch mal probieren, was Explode daraus macht.
Öffne die Datei über eine ADOConnection und der Drops ist gelutscht
Allerdings musst du dafür die CSV-Datei entweder in ein temp. Verzeichnis kopieren, oder
die Schema.ini Datei in das CSV-Verzeichnis erzeugen

Wobei die erste Variante zu bevorzugen ist
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 14. Feb 2011, 20:41
Öffne die Datei über eine ADOConnection und der Drops ist gelutscht
Hm, so einen Aufwand wollte ich eigentlich nicht treiben. Aber angucken kann man es ja mal. hast du irgendwo noch weitere Infos dazu? Mit ADO Verbindungen habe ich noch nie gearbeitet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 14. Feb 2011, 20:47
Das ist quasi der gesamte "Aufwand"

Delphi-Quellcode:
con1 : TADOConnection;
tbl1 : TADOTable;
ds1 : TDataSource;
dbg1 : TDBGrid;

tbl1.Connection := con1;
ds1.DataSet := tbl1;
dbg1.DataSource := ds1;
und hier die Arbeit
Delphi-Quellcode:
procedure TForm1.FileOpen1Accept( Sender : TObject );
var
  DataFile : _FileName; // <- ist ein Spezial-Record für Dateinamen :o)
  SchemaFile : _FileName;
  idx : Integer;
begin
  if con1.Connected
  then
    con1.Close;

  DataFile := FileOpen1.Dialog.FileName;
  SchemaFile := DataFile;
  SchemaFile.FileName := 'schema.ini';

  with TIniFile.Create( SchemaFile ) do
    try
      WriteString( DataFile.FileName, 'Format', 'Delimited(;)' );
    finally
      Free;
    end;

  con1.Provider := 'MSDASQL';
  con1.ConnectionString := 'Driver={Microsoft Text-Treiber (*.txt; *.csv)};Extensions=asc,csv,tab,txt;';
  con1.DefaultDatabase := DataFile.DirName.FullName;

  tbl1.TableDirect := True;
  tbl1.TableName := DataFile.FileName;

  tbl1.Open;

end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#8

AW: CSVViewer - Zum Betrachten von CSV-Dateien

  Alt 12. Nov 2013, 09:54
Danke Luckie, für die Vorarbeit. Ganz praktisch, aber zuuu langsam. Ich habe die Methode FillListview mal dahingehend angepasst, dass die Daten wirklich schnell verarbeitet werden. Jetzt benötigt nur noch die Berechnung der Spaltenbreite eine gewisse Zeit

......
Angehängte Dateien
Dateityp: zip CSVViewer.zip (26,3 KB, 64x aufgerufen)
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:07 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