Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: csv Datei Import ClassHelper für TClientDataSet

  Alt 8. Jun 2017, 09:51
..., 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
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat