..., auch wenn ich ihn immer noch nicht ganz verstehe
....
Die Funktionalität ist quasi Bestandteil des TStrings Objekts
Das kannst Du ganz einfach testen. Lege zwei TMemo und einen TButton auf dein TForm.
Auf den TButton hinterlegst Du auf das OnClick Ereignis folgenden Text:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo2.Lines.Add(Memo1.Lines.DelimitedText);
end;
Damit wird jeweils eine Zeile mit dem kommaseparierten Werten an Memo2 hinzugefügt.
Welche Auswirkungen die Parameter/Eigenschaften haben kann man leicht mit folgendem Quelltext testen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Delimiter := Edit1.Text[1]; // Default: ,
Memo1.Lines.QuoteChar := Edit2.Text[1]; // Default: "
Memo1.Lines.StrictDelimiter := CheckBox1.Checked; // Default: False
Memo2.Lines.Add(Memo1.Lines.DelimitedText);
end;
Einfach noch 2 TEdit und eine TCheckBox auf das Form legen. Und mit den Werten spielen (Testen)
Dann ist relativ schnell klar wie der Mechanismus funktioniert.
Das funktioniert natürlich auch in der anderen Richtung:
Memo1.Lines.DelimitedText := 'Eins,Zwei,Drei,"Vier","Fünf"';
Memo1 kann also eine Zeile der
CSV Datenmenge darstellen (Ein Wert(Spalte) pro Zeile)
Mit einem paar Klicks auf Button 1 wird schnell klar wie man eine ganze Datei verarbeiten kann.
Man braucht nur ein 2. TStrings um die Liste abzulegen. (In unserem Beispiel Memo2.) Diese wird dann mit einem
for
zeilenweise verarbeitet.
Das ist alles.
Die ganze Funktionalität der Umwandlung von/in das
CSV Format ist schon im TStrings implementiert
Deswegen ist das so wenig Programieraufwand.
Siehe auch Doku:
http://docwiki.embarcadero.com/Libra....DelimitedText
Der
class helper for TClientDataSet
ist nur eine Einfache Methode die Prozedur an das TClientDataSet zu hängen, so dass es aussieht, als ob TClientDataSet das könnte. (ohne Vererbung)
Siehe auch Doku:
http://docwiki.embarcadero.com/RADSt...ecords_(Delphi)
Ich hoffe Du verstehst es nun besser.
De