Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   CSVViewer - Zum Betrachten von CSV-Dateien (https://www.delphipraxis.net/158355-csvviewer-zum-betrachten-von-csv-dateien.html)

Luckie 14. Feb 2011 16:21

CSVViewer - Zum Betrachten von CSV-Dateien
 
Liste der Anhänge anzeigen (Anzahl: 2)
Nichts großes, weltbewegendes. Nur ein kleines Programm, um CSV-Dateien betrachten zu können, ohne dass man immer gleich Excel oder OpenOffice starten muss. So was wollte ich schon immer mal für die Backupdateien meiner Adressdatenbank machen und jetzt habe ich es gemacht. Es war eigentlich nur für mich zu privat Zwecken gedacht, aber eventuell findet es ja noch jemand anders nützlich, wenn nicht das Programm, dann vielleicht den Code, obwohl auch dieser war in seiner Grundform in zwanzig Minuten hingehackt.

Das Programm sollte selbsterklärend sein. Mit einem Rechtsklick auf den Listview öffnet sich ein Kontextmenü, mit dem man entweder die eine Zelle/Feld in die Zwischenablage kopieren kann oder die ganze Zeile.

vergessen 14. Feb 2011 19:34

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
Hi Luckie,

vielen Dank für den Quelltext! War schon immer zu faul für sowas :oops: !

Mein D7pe kennt die Zeile (in TfrmMain.FillListview) mit
Delphi-Quellcode:
Delimitedline.StrictDelimiter := True;
nicht und mag die Zeile für das automatische Spaltenbreitensetzen mit
Delphi-Quellcode:
lvCSVFile.Columns.Items[j].Width := ColumnTextWidth;
nicht (Absturz mit "Listenindex überschreitet das Maximum (x)").

Abhilfe: Beide Zeilen (in TfrmMain.FillListview) auskommentieren und nach
Delphi-Quellcode:
Progressbar1.Position := 0;
die Zeile
Delphi-Quellcode:
for i:=0 to lvCSVFile.Columns.count -1 do lvCSVFile.Columns[i].width:= -1;
einfügen.


MfG

Luckie 14. Feb 2011 19:37

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
Entwickelt hab eich mit D2006. Und ColumnTextWidth ist nur eine Konstante für -1.

vergessen 14. Feb 2011 19:47

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
Delphi-Quellcode:
lvCSVFile.Columns.Items[j].Width := -1;
statt
Delphi-Quellcode:
lvCSVFile.Columns.Items[j].Width := ColumnTextWidth;
führt in D7pe zum gleichen Absturz :oops:

MfG

mkinzler 14. Feb 2011 19:48

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
Es ist ja auch egal, ob man eine Konstante niummt oder den Wert direkt zuweist.

Luckie 14. Feb 2011 19:50

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
Jetzt stellt sich die Frage, warum das bei mir nicht zum Absturz führt. Ist deine CSV-Datei eventuell nicht in Ordnung oder so?

Sir Rufo 14. Feb 2011 20:18

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
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

Luckie 14. Feb 2011 20:23

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
Was macht mein Programm daraus?

Sir Rufo 14. Feb 2011 20:33

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
Zitat:

Zitat von Luckie (Beitrag 1081708)
Was macht mein Programm daraus?

sowas
Code:
ID    TEXT
===== =========
1     Test
2     Test
3     Test"Test
4     Tes
Test
Test"
5     Last

Luckie 14. Feb 2011 20:36

AW: CSVViewer - Zum Betrachten von CSV-Dateien
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.
Seite 1 von 4  1 23     Letzte »    

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