![]() |
csv-Datei einlesen
Hallo kann mir bei meinen Problem jemand helfen?
Ich habe zum Einlesen einer csv-Dateien folgenden Code geschrieben: procedure TForm1.Import1FromCSVfile(sFile: string); var tfDatei: TextFile; sZInhalt,be: string; slWerte: TStringList; iZeile,zähler: Integer; begin Try Try AssignFile(tfDatei, sFile); Reset(tfDatei); iZeile:= 0; while not EoF(tfDatei) do begin slWerte := TStringList.Create; Readln(tfDatei,sZInhalt); slWerte.Delimiter := ';'; slWerte.QuoteChar := '"'; slWerte.DelimitedText := sZInhalt; Inc(iZeile); // erste Zeile ist der Kopf tblImport.Open; tblImport.Last; tblImport.Append; tblImport['OBJ'] :=Edit1.Text; tblImport['Feld_01'] := slWerte.Strings[0]; tblImport['Feld_02'] := slWerte.Strings[1]; tblImport['Feld_03'] := slWerte.Strings[2]; tblImport['Feld_04'] := slWerte.Strings[3]; usw. Es tritt folgendes Problem auf: Es werden alle Zeilen eingelesen.Aber wenn z.B. das erste Feld ein Text ist, welches aus zei Wörtern besteht, wird das erste Wort in die erste Spalte geschrieben und das zweite Wort (welches eigendlich in die erste Zeile hehöhrt) in die zweite Spalte geschrieben. Dies geschieht bei allen Texten welche ein Leerzeichen haben. Dadurch verschiebt sich die Einlesung unkontrolliert. Was habe ich da falsch gemacht bzw. was fehlt noch? |
AW: csv-Datei einlesen
Delphi-Quellcode:
Du solltest übrigens lieber die Datei per TStreamReader lesen, nicht über das uralte Textfile-"API". Dadurch kannst Du auch mit anderen Zeichenkodierunge fertig werden.
sWerte.StrictDelimiter := true;
|
AW: csv-Datei einlesen
Such mal nach csv da ist der zweite Eintrag
![]() Gruß K-H |
AW: csv-Datei einlesen
Hallo
ich bedanke mich für die guten Hinweise. Habe es ausprobiert, alles o.k. Danke nochmals Hänsel |
AW: csv-Datei einlesen
@Hänsel
Nur Interessehalber, welche Version hast du genommen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz