Infos zu CSVDataset?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Istvan42
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?

Beitrag von Istvan42 »

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
FPC-Version: 3.3.1, Lazarus Version 2.1.0 (trunk), x86_64-darwin-cocoa

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
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?

Beitrag von m.fuchs »

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

Istvan42
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?

Beitrag von Istvan42 »

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.


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.

Gruß
Isvan
FPC-Version: 3.3.1, Lazarus Version 2.1.0 (trunk), x86_64-darwin-cocoa

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Infos zu CSVDataset?

Beitrag von wp_xyz »

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) 228-mal heruntergeladen

Istvan42
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?

Beitrag von Istvan42 »

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.


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.

Gruß + Danke!
FPC-Version: 3.3.1, Lazarus Version 2.1.0 (trunk), x86_64-darwin-cocoa

matthias@a-pes.ch
Beiträge: 2
Registriert: So 26. Okt 2014, 20:16

Re: Infos zu CSVDataset?

Beitrag von matthias@a-pes.ch »

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.

Benutzeravatar
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?

Beitrag von Winni »

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:

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

Wenn Du einen anderen Feld-Separator als das Komma hast, musst Du das bei split angeben.

Winni

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Infos zu CSVDataset?

Beitrag von fliegermichl »

oder einfach ein SDFDataSet auf das Formular setzen und den Namen der csv Datei eintragen.

Sieben
Beiträge: 202
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?

Beitrag von Sieben »

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.

Benutzeravatar
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?

Beitrag von Winni »

Hallo!

Nö. Split ist "superschlau" und entfernt die Quotes automatisch.

Winni

Benutzeravatar
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?

Beitrag von Winni »

Hi!

Nö, das stimmt nicht, was ich gesagt hab.

Verwechselt mit
StringGrid1.LoadFromCSVFile

Das ist superschlau.

Winni

matthias@a-pes.ch
Beiträge: 2
Registriert: So 26. Okt 2014, 20:16

Re: Infos zu CSVDataset?

Beitrag von matthias@a-pes.ch »

Hallo Winni, danke für codebeispiel.
Ich werde es am Wochenende mal probieren.

Antworten