Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
461 Beiträge
 
Delphi XE4 Professional
 
#1

DelimitedText in Tstrings: Problem DoubleQuotes wenn sie am Anfang eines Wertes sind

  Alt 17. Jan 2022, 15:28
Hallo Leute

Vorweg: "Double quotes as a string encapsulator is a feature of the CSV specifications"


Ich will eine UTF-8 Textdate einladen und die "Felder" auslesen und in meine Tabelle schreiben (die CSV Datei bekomme ich von einer anderen Software)

Struktur der CSV-Textdatei:
Kundennummer;Kundenname;Plz;Ort

Beispiel:
001;Hotel Huber;12345;Ort
002;Huber Hotel;12345;Ort
003;Hotel "Huber";12345;Ort
004;"Huber" Hotel;12345;Ort

Der Fehler kommt nun in Zeile 4 .. weil das " gleich nach dem ; kommt vermute ich.

Die CSV-Datei kann ich nicht ändern - wie kann ich via Delphi das Problem mit dem führenden Doublequote lösen?





Wie ich es aktuell mache:

Delphi-Quellcode:
 sl := TStringList.Create;
          slRow := TStringList.Create;

          slRow.StrictDelimiter := true;
          slRow.Delimiter := ';';
          try
   
            sl.LoadFromFile(datenpfad + '\' + dateiname, TEncoding.UTF8);

            for line := 0 to sl.Count-1 do
              begin
      
                slRow.DelimitedText := sl[line];

     
                t0 := slRow[0];
                t1 := slRow[1];
                t2 := slRow[2];
                t3 := slRow[3];


                Importtabelle.Append;
                Importtabelle.FieldByName('Datenquelle').AsInteger := 1;
                Importtabelle.FieldByName('Kundennummer').AsString := t0;
                Importtabelle.FieldByName('Kundenname').AsString := t1;
                Importtabelle.FieldByName('Postleitzahl').AsString := t2;
                Importtabelle.FieldByName('Ort').AsString := t3;
                Importtabelle.post;

              end;
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat