Hallo Borschti,
CSV ist auch als
ASCII-Delimited bekannt, Dazu gibt es auch eine
RFC aber die kann ich gerade nicht finden. Ganz knapp formuliert funktioniert das so:
Die Datei ist eine Textdatei.
Für jeden Datensatz gibt es einen Zeile.
Delphi-Quellcode:
Daten+CRLF / Daten +LF { Trenner ist #13#10 oder #10}
Daten=Feld+[Trennzeichen]+Feld+[TrennZeichen]+Feld....... { Trennzeichen kann beliebig definiert werden excl. CR und LF }
Feld=["]+[Bstb]/[Zahl]/[SonderZchn]....+["]
Rein theoretisch ist der Feldbegrenzer " nur notwendig wenn das Trennzeichen im Feld vorkommt. Bei neueren Datenbeständen ist aber praktisch jedes Feld mit Begrenzern versehen.
Falls Du nur numerische Werte übergeben willt ist aber auch so etwas zulässig:
1234,12.4,400 ... usw.
oder
1234;12.4;400 ... usw.
oder
1234;12,4;400 ... usw.
Im
Jedi-Projekt soll es übrigens Routinen für die
CSV-Verarbeitung geben.
Ausserdem hat Tstrings auch etwas zu bieten:
Zitat:
Die Eigenschaft DelimitedText stellt alle Strings im TStrings-Objekt in einem einzigen String dar.
Delphi-Syntax:
property DelimitedText: string;
C++ Syntax:
__property AnsiString DelimitedText = {read=GetDelimitedText, write=SetDelimitedText};
Beschreibung
DelimitedText bietet die Möglichkeit, alle Strings eines TStrings-Objekts wie einen einzigen String zu behandeln.
Beim Lesen von DelimitedText erhalten Sie einen Wert, in dem die einzelnen Strings auf zwei Arten voneinander getrennt sind: jeder String wird von dem Zeichen eingeschlossen, das in der Eigenschaft QuoteChar angegeben ist. Zwischen den einzelnen Strings steht das Zeichen, das in der Eigenschaft Delimiter angegeben ist.
Wenn Sie DelimitedText einen Wert zuweisen, müssen die einzelnen Strings zwischen dem in QuoteChar festgelegten Zeichen stehen oder mit dem in Delimiter definierten Trennzeichen voneinander getrennt werden. Die beiden Methoden können auch gleichzeitig verwendet werden.
Hinweis: Die Eigenschaft CommaText entspricht der Eigenschaft DelimitedText, wenn als Trennzeichen (Delimiter) ein Komma und als Anführungszeichen (QuoteChar) das Zeichen " verwendet wird.
Soweit mir bekannt ist werden
CSV-Dateien automatisch von excel geöffnet.
Das Auslesen aus einer
DB geht ungefähr so
Delphi-Quellcode:
repeat
for i:=0 to dm_portfolio.mquery1.fields.count-1 do
dummy:=dummy+trenner+dm_portfolio.mquery1.fields.fields[i].asstring;
ll.add(dummy);
dummy:='';
dm_portfolio.mquery1.next;
until dm_portfolio.mquery1.eof;
Bitte verwende den Schnipsel nicht ungeprüft, da fehlt die Initialisierung und die Finalisierung von Dummy, da geht's nur ums Prinzip
Gruß
K-H