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
 
#4

AW: csv Datei Import ClassHelper für TClientDataSet

  Alt 27. Okt 2011, 09:10
Geht das auch mit einer CSV-Datei der Form
Code:
Test;"Zeile 1 von Test
Zeile 2 von Test";Test
Daraus muss ein Record mit drei Feldern werden.
Nein, das geht nicht.
In csv Dateien bedeutet das Zeilenende in der Regel dass ein neuer Datensatz beginnt. Sprich: Es sind keine Zeilenunbrüche in Feldern erlaubt.

In meiner Implementierung kopiere ich jede einzelne Zeile in ein TStrings und hole dann die einzelnen Felder aus diesem heraus.
Mit meiner Methode geht das also auf keinen Fall.

Ich habe mir das ursprünglich geschrieben um bestimmte Log-Dateien auszuwerten.
Für die CodeLib habe ich dann noch SaveToFile ergänzt.

Meine Intention, das in die CodeLib zu stellen, war zu zeigen, dass es einen relativ einfachen Weg gibt csv Dateien zu importieren.

Letztendlich reicht schon folgender Quellcode aus um eine csv-Datei zu lesen und auf alle einzelnen Felder zuzugreifen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  slFile, slRow: TStringList;
  i, j: Integer;
begin
  slFile := TStringList.Create;
  slRow := TStringList.Create;
  slRow.Delimiter := ';';
  slRow.QuoteChar := '"';
  try
    slFile.LoadFromFile('dateiname.csv');
    for i := 0 to slFile.Count - 1 do
    begin
      slRow.DelimitedText := slFile[i]; // wandelt eine csv-Zeile um -> jedes Feld bekommt eine eigene Zeile in slRow
      for j := 0 to slRow.Count - 1 do
      begin
        Memo1.Lines.Add(Format('Row:%3d Col:%2d: Value:%s', [i, j, slRow[j]]));
      end;
    end;
  finally
    slFile.Free;
    slRow.Free;
  end;
end;
Das ist ein gutes Beispiel für KISS (keep it stupid simple).

Ich hoffe diese Info hilft Dir.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)

Geändert von MaBuSE (27. Okt 2011 um 09:27 Uhr)
  Mit Zitat antworten Zitat