![]() |
CSV-Datei die mit Semikolons getrennt ist einlesen
Hallo zusammen,
habe folgenden Code hier im Forum gefunden:
Delphi-Quellcode:
Diese trennt aber die Spalten bei einem Komma, wie stelle ich das um auf Semikolon ?
sRows := TStringList.Create;
sRows.LoadFromFile('Datei.csv'); sCols := TStringList.Create; sCols.CommaText := sRows[0]; FormCSV.StringGridCSV.ColCount := sCols.Count; sCols.Free; FormCSV.StringGridCSV.RowCount := sRows.Count; for i := 0 to Pred(sRows.Count) do FormCSV.StringGridCSV.Rows[i].CommaText := sRows[i]; sRows.Free; Gruss Holger |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Delphi-Quellcode:
sCols.Delimiter := ';';
sCols.StrictDelimiter := true; // falls leerzeichen ohne anführungszeichen... sCols.DelimitedText := 'Hallo;Welt'; |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Vielen Dank für die Hilfe,
wie binde ich denn das jetzt in den Code ein ? Gruss Holger |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Ab Zeile 2 (Die 3. natürlich nicht)
|
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Also wenn ich den Code mit dem Delimiter benutze...
Delphi-Quellcode:
... trennt der trotzdem immer noch bei dem Komma
sRows := TStringList.Create;
sRows.LoadFromFile('Datei.csv'); sCols.Delimiter := ';'; sCols.StrictDelimiter := true; sCols := TStringList.Create; sCols.CommaText := sRows[0]; FormCSV.StringGridCSV.ColCount := sCols.Count; sCols.Free; FormCSV.StringGridCSV.RowCount := sRows.Count; for i := 0 to Pred(sRows.Count) do FormCSV.StringGridCSV.Rows[i].CommaText := sRows[i]; sRows.Free; Liegt das vielleicht an dem Befehl '.CommaText' ? Gruss Holger |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Du mußt die Eigenschaften setzen, bevor du den Text einlädst:
Delphi-Quellcode:
sRows := TStringList.Create;
sCols.Delimiter := ';'; sCols.StrictDelimiter := true; sCols.LoadFromFile('Datei.csv'); Zitat:
|
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Habe es jetzt so umgebaut, aber er trennt immer noch beim Komma:
Delphi-Quellcode:
Gruss
sRows := TStringList.Create;
sRows.Delimiter := ';'; sRows.StrictDelimiter := true; sRows.LoadFromFile('Datei.csv'); sCols := TStringList.Create; sCols.DelimitedText := sRows[0]; FormCSV.StringGridCSV.ColCount := sCols.Count; sCols.Free; FormCSV.StringGridCSV.RowCount := sRows.Count; for i := 0 to Pred(sRows.Count) do FormCSV.StringGridCSV.Rows[i].DelimitedText := sRows[i]; sRows.Free; Holger |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Du hast auch die Eigenschaften bei der falschen StringListe gesetzt.
|
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Wenn ich das so mache...
Delphi-Quellcode:
... trennt der immer nocoh am Komma ...
sRows := TStringList.Create;
sRows.LoadFromFile('Datei.csv'); sCols := TStringList.Create; sCols.Delimiter := ';'; sCols.StrictDelimiter := true; // falls leerzeichen ohne anführungszeichen... sCols.DelimitedText := sRows[0]; FormCSV.StringGridCSV.ColCount := sCols.Count; sCols.Free; FormCSV.StringGridCSV.RowCount := sRows.Count; for i := 0 to Pred(sRows.Count) do FormCSV.StringGridCSV.Rows[i].DelimitedText := sRows[i]; sRows.Free; Gruss Holger |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Wie wärs mit
Delphi-Quellcode:
?
FormCSV.StringGridCSV.Rows.Delimiter := ';';
[Edit: richtigen Delimiter] |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Weil der Delimiter und StrictDelimiter für alle FormCSV.StringGridCSV.Rows[i] wahrscheinlich nicht gesetzt sind?
PS: Nach da drüber: soll doch ';' und nicht ',' sein ;-) |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Habe nun die Lösung:
Delphi-Quellcode:
Habe da noch ein abschliessende Frage:
sRows := TStringList.Create;
sRows.LoadFromFile('Datei.csv'); sCols := TStringList.Create; sCols.DelimitedText := sRows[0]; FormCSV.StringGridCSV.ColCount:=sCols.Count; sCols.Free; FormCSV.StringGridCSV.RowCount := sRows.Count; for i := 0 to Pred(sRows.Count) do begin FormCSV.StringGridCSV.Rows[i].Delimiter := ';'; FormCSV.StringGridCSV.Rows[i].StrictDelimiter := true; FormCSV.StringGridCSV.Rows[i].DelimitedText := sRows[i]; end; sRows.Free; - Wie kann ich die Daten aus der CSV-Datei von Spalte 1 bis ... in das StringGrid schreiben. Heisst: Spalte 0 soll leer bleiben. Gruss Holger |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Probieren geht über studieren ;)
Spiel doch einfach mal ein bißchen mit TStrings/TStringList rum, um zu wissen was das macht und wie es geht. Folgendes Beispielsweise würde eine leere erste Spalte schreiben (nicht die eleganteste Methode, aber evtl. die mit den wenigsten Abweichungen):
Delphi-Quellcode:
// sCols.Free; streichen!
for i := 0 to Pred(sRows.Count) do begin FormCSV.StringGridCSV.Rows[i].Delimiter := ';'; FormCSV.StringGridCSV.Rows[i].StrictDelimiter := true; sCols.DelimitedText := sRows[i]; sCols.Insert(0, ''); FormCSV.StringGridCSV.Rows[i].DelimitedText := sCols.DelimitedText; end; sCols.Free; // stattdessen hier! sRows.Free; |
Re: CSV-Datei die mit Semikolons getrennt ist einlesen
Hi,
die Spalte wird wohl eingefügt, nur fehlt nun wieder die Trennung beim Semikolon. Es wird wieder beim Komma getrennt. So habe ich es umgebaut:
Delphi-Quellcode:
Gruss
sRows := TStringList.Create;
sRows.LoadFromFile('Datei.csv'); sCols := TStringList.Create; sCols.DelimitedText := sRows[0]; FormCSV.StringGridCSV.ColCount:= sCols.Count; FormCSV.StringGridCSV.RowCount := sRows.Count; for i := 0 to Pred(sRows.Count) do begin FormCSV.StringGridCSV.Rows[i].Delimiter := ';'; FormCSV.StringGridCSV.Rows[i].StrictDelimiter := true; sCols.DelimitedText := sRows[i]; sCols.Insert(0, ''); FormCSV.StringGridCSV.Rows[i].DelimitedText := sCols.DelimitedText; end; sRows.Free; sCols.Free; Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 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