Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   csv-Datei einlesen (https://www.delphipraxis.net/200950-csv-datei-einlesen.html)

Hänsel 10. Jun 2019 15:17

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?

peterbelow 10. Jun 2019 15:53

AW: csv-Datei einlesen
 
Delphi-Quellcode:
sWerte.StrictDelimiter := true;
Du solltest übrigens lieber die Datei per TStreamReader lesen, nicht über das uralte Textfile-"API". Dadurch kannst Du auch mit anderen Zeichenkodierunge fertig werden.

p80286 10. Jun 2019 21:44

AW: csv-Datei einlesen
 
Such mal nach csv da ist der zweite Eintrag https://www.delphipraxis.net/164041-...ntdataset.html. Darin findest Du einen Lösung und noch Links zu ähnlichen Lösungen.


Gruß
K-H

Hänsel 11. Jun 2019 05:49

AW: csv-Datei einlesen
 
Hallo
ich bedanke mich für die guten Hinweise. Habe es ausprobiert, alles o.k.

Danke nochmals
Hänsel

Blackpit 11. Jun 2019 18:26

AW: csv-Datei einlesen
 
@Hänsel
Nur Interessehalber, welche Version hast du genommen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz