Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.052 Beiträge
 
Delphi 12 Athens
 
#9

AW: Nur eine Spalte aus CSV-Datei auslesen und verarbeiten

  Alt 23. Nov 2020, 19:40
Drum auch TStringList ... die macht das Trennen der Zeilen (#10, #13 oder #13#10), aber es geht auch ReadLn oder eben z.B. ein PosEx(#13#10).
Und dann nochmal eine weitere TStringList.DelimitedText für das Trennen am "Komma", wofür man auch jede beliebige andere SplitString-Funktion nehmen kann,
So man muß sich um fast nichts kümmern und ist alles schon von Haus aus im Delphi vorhanden.

ReadAllLines erzeugt ein TArray<string> mit allen Zeilen (wie die erste StringList)
Bei diesem Code muß man aber aufpassen, den wenn in irgendeiner Zeile nicht 2 Spalten, also mindestens 1 Delimiter vorkommt, dann knallt es, wenn man so ungeprüft auf das Array zugreift.
Delphi-Quellcode:
for var Values in TFile.ReadAllLines('C:\irgendwo\file.csv') do
  MacheWasMitDerZweitenSpalte(Values.Split([#9])[1]);
Man könnte das ganze Problem sogar mit einem RegEx lösen, also irgendwie so
Delphi-Quellcode:
for var Match in TRegEx.Matches(TFile.ReadAllText('C:\file.csv'), '^[^\t]*\t([^\t]*)', [roMultiLine]) do
  DoWithSecondValue(Match.Groups[1]); // Match.Value
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (23. Nov 2020 um 19:55 Uhr)
  Mit Zitat antworten Zitat