Infos zu CSVDataset?
-
- Beiträge: 3
- Registriert: Fr 28. Feb 2020, 10:32
- OS, Lazarus, FPC: Mac OSX Cataline (L 2.1.0 FPC 3.3.1)
- CPU-Target: x86-64Bit
Infos zu CSVDataset?
Hallo zusammen,
ich bin neu bei Lazarus und Free Pascal und habe leider nur sehr wenige Informationen zum CSVDataset gefunden.
Gibt zum CSVDataset eine Dokumentation und auch Beispiele für die richtige Verwendung?
Ich würde z.B. gerne über CSVDataset die Daten in einem TDBGrid oder TStringGrid anzeigen lassen, habe aber keine Idee, wie das geht.
Gruß
Istavn
ich bin neu bei Lazarus und Free Pascal und habe leider nur sehr wenige Informationen zum CSVDataset gefunden.
Gibt zum CSVDataset eine Dokumentation und auch Beispiele für die richtige Verwendung?
Ich würde z.B. gerne über CSVDataset die Daten in einem TDBGrid oder TStringGrid anzeigen lassen, habe aber keine Idee, wie das geht.
Gruß
Istavn
FPC-Version: 3.3.1, Lazarus Version 2.1.0 (trunk), x86_64-darwin-cocoa
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Infos zu CSVDataset?
Was genau möchtest du machen? Du schreibst ja vom Anzeigen in TStringGrid, das hat eine Methode LoadFromCSVFile, mit der du direkt eine CSV-Datei laden und anzeigen kannst.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 3
- Registriert: Fr 28. Feb 2020, 10:32
- OS, Lazarus, FPC: Mac OSX Cataline (L 2.1.0 FPC 3.3.1)
- CPU-Target: x86-64Bit
Re: Infos zu CSVDataset?
Das ist schon mal interessant, werde ich sicherlich probieren. Ich habe CSVDataset in Lazarus (LCL) gefunden und mich gefragt, wie man damit umgeht und das CSVDataset einsetzen kann. Finde aber nicht wirklich hilfreiche Infos dazu.m.fuchs hat geschrieben:Was genau möchtest du machen? Du schreibst ja vom Anzeigen in TStringGrid, das hat eine Methode LoadFromCSVFile, mit der du direkt eine CSV-Datei laden und anzeigen kannst.
Gruß
Isvan
FPC-Version: 3.3.1, Lazarus Version 2.1.0 (trunk), x86_64-darwin-cocoa
Re: Infos zu CSVDataset?
CSVDataset finde ich etwas verwirrend, weil es einerseits CSV-Dateien lesen und schreiben kann, andererseits sich selbst in binären Dateien speichert (zusammen mit den Strukturinformationen). FPC 3.04 hat zudem noch einen Bug diesbezüglich. Daher läuft das beigefügte Beispielprogramm nur unter FPC 3.2+. Dort wird zunächst ein leerer Dataset erzeugt und mit Dummy-Daten befüllt. Wenn man da das Programm beendet, werden die Daten in der (Nicht-CSV-) Datei "test.dat" gespeichert und von dort beim nächsten Start eingelesen. Wenn man auf den "Export to CSV file" button klickt, wird die Tabelle als CSV-Datei geschrieben, die man mit "Import from CSV file" auch einlesen kann.
- Dateianhänge
-
csv_dataset_fileformat.zip
- (2.77 KiB) 248-mal heruntergeladen
-
- Beiträge: 3
- Registriert: Fr 28. Feb 2020, 10:32
- OS, Lazarus, FPC: Mac OSX Cataline (L 2.1.0 FPC 3.3.1)
- CPU-Target: x86-64Bit
Re: Infos zu CSVDataset?
Ah, vielen Dank. Hab's schon ausprobiert und reingeschaut. Denke, damit komme ich schon mal weiter. Unter Mac OS konnte ich aber die Datei nicht schreiben oder lesen (?) da die Berechtigung nicht vorhanden ist. Jendenfalls war die Datei in der .app enthalten.wp_xyz hat geschrieben:CSVDataset finde ich etwas verwirrend, weil es einerseits CSV-Dateien lesen und schreiben kann, andererseits sich selbst in binären Dateien speichert (zusammen mit den Strukturinformationen). FPC 3.04 hat zudem noch einen Bug diesbezüglich. Daher läuft das beigefügte Beispielprogramm nur unter FPC 3.2+. Dort wird zunächst ein leerer Dataset erzeugt und mit Dummy-Daten befüllt. Wenn man da das Programm beendet, werden die Daten in der (Nicht-CSV-) Datei "test.dat" gespeichert und von dort beim nächsten Start eingelesen. Wenn man auf den "Export to CSV file" button klickt, wird die Tabelle als CSV-Datei geschrieben, die man mit "Import from CSV file" auch einlesen kann.
Gruß + Danke!
FPC-Version: 3.3.1, Lazarus Version 2.1.0 (trunk), x86_64-darwin-cocoa
-
- Beiträge: 2
- Registriert: So 26. Okt 2014, 20:16
Re: Infos zu CSVDataset?
Hallo, ich habe auch frage zu csv import.
ich kenn mich mit dem import thema nicht aus.
ich habe eine CSV mit 5 spalten und ca. 26000 zeilen.
ich möchte nun spalte 2 und 4 einlesen.und sie dann später in ein sqlite db schreiben.
Kann mir eine tip eben ob das möglich ist, und wenn ja wie?
danke für hilfe und infos.
ich kenn mich mit dem import thema nicht aus.
ich habe eine CSV mit 5 spalten und ca. 26000 zeilen.
ich möchte nun spalte 2 und 4 einlesen.und sie dann später in ein sqlite db schreiben.
Kann mir eine tip eben ob das möglich ist, und wenn ja wie?
danke für hilfe und infos.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Infos zu CSVDataset?
Hallo!
Wenn Du schon beim Einlesen nur 2 bestimmte Felder von 5 haben willst, musst Du ganz archaisch jeweils ne Zeile lesen und die Filtern.
Aber wir haben ja moderne Zeiten und genug RAM.
Also: Alles Einlesen, rausfiltern und dann nur die zwei benötigten Felder in die DB schreiben - und den Rest wegschmeissen.
Das geht in etwa so:
Wenn Du einen anderen Feld-Separator als das Komma hast, musst Du das bei split angeben.
Winni
Wenn Du schon beim Einlesen nur 2 bestimmte Felder von 5 haben willst, musst Du ganz archaisch jeweils ne Zeile lesen und die Filtern.
Aber wir haben ja moderne Zeiten und genug RAM.
Also: Alles Einlesen, rausfiltern und dann nur die zwei benötigten Felder in die DB schreiben - und den Rest wegschmeissen.
Das geht in etwa so:
Code: Alles auswählen
Procedure ReadIn;
var St : TStringList;
OneRecord: TStringArray;
i : integer;
s : string;
begin
st := TstringList.create;
st.loadFromFile ('MeineCSVDatei.csv');
for i := 0 to st.count - 1 do
begin
s := st[i];
OneRecord := s.split(',' );
// Jetzt Spalten 2 und 4 wegscheiben
machwas(OneRecord[1]);
machwas(OneRecord[3]);
end; // i
st.free;
end; // proc
Winni
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1645
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Infos zu CSVDataset?
oder einfach ein SDFDataSet auf das Formular setzen und den Namen der csv Datei eintragen.
-
- Beiträge: 289
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: Infos zu CSVDataset?
Vorher lohnt aber auch noch ein Blick auf die csv-Datei selbst, ob man es zB auch mit 'quotierten' Einträgen zu tun usw. Im Netz gibt es generelle Infos zum csv-Format, die man sich erst mal ansehen sollte. Wenn zB Quotes dabei sind, müsste zB das Beispiel von Winni entsprechend angepasst und eine der überladenen Versionen von Split() aufgerufen werden.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Infos zu CSVDataset?
Hallo!
Nö. Split ist "superschlau" und entfernt die Quotes automatisch.
Winni
Nö. Split ist "superschlau" und entfernt die Quotes automatisch.
Winni
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Infos zu CSVDataset?
Hi!
Nö, das stimmt nicht, was ich gesagt hab.
Verwechselt mit
StringGrid1.LoadFromCSVFile
Das ist superschlau.
Winni
Nö, das stimmt nicht, was ich gesagt hab.
Verwechselt mit
StringGrid1.LoadFromCSVFile
Das ist superschlau.
Winni
-
- Beiträge: 2
- Registriert: So 26. Okt 2014, 20:16
Re: Infos zu CSVDataset?
Hallo Winni, danke für codebeispiel.
Ich werde es am Wochenende mal probieren.
Ich werde es am Wochenende mal probieren.