CSV Anzahl der Zeilen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

CSV Anzahl der Zeilen

Beitrag von Pure_Beginner »

Hallo zusammen,

bin auf der Suche die Anzahl der enthaltenen Zeilen in einer .csv Datei zu ermitteln.
Habe leider bei den Boardmitteln nichts gefunden.

für Eure Hilfe wäre ich Dankbar.

Grüße
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: CSV Anzahl der Zeilen

Beitrag von ts-soft »

Zeilen einlesen und dabei Zählen!

oder was hast Du erwartet?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: CSV Anzahl der Zeilen

Beitrag von Pure_Beginner »

@ts-soft

ja das geht :lol:
aber ich möchte die letzte Zeilen (immer 14) nicht einlesen.

Grüße
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: CSV Anzahl der Zeilen

Beitrag von Pure_Beginner »

also was ich meine ist, kann ich die Zeilen vorher counten ohne alles einzulesen ?
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: CSV Anzahl der Zeilen

Beitrag von ts-soft »

Pure_Beginner hat geschrieben:also was ich meine ist, kann ich die Zeilen vorher counten ohne alles einzulesen ?
Nein, wie sollte das gehen? Wenn, was unwahrscheinlich ist, jede Zeile dieselbe Anzahl an Zeichen
hätte, könnte man es anhand der Dateigrösse ausmachen. Das ist aber bei CSV-Dateien eher nicht der Fall.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: CSV Anzahl der Zeilen

Beitrag von Pure_Beginner »

@ts-soft,

danke für die rasche Antwort.
also erst durchzählen dann importieren.

Schönen Sonntag
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: CSV Anzahl der Zeilen

Beitrag von ts-soft »

Ich würde die CSV-Datei (ist ja nur eine stinknormale Textdatei) als ganzes in den Speicher lesen und
dann anhand der definierten Trennzeichen, die Anzahl Zeilen und Spalten ermitteln.
Deine Aussage hört sich an, als wenn Du es 2x lesen möchtest?

Schönen Sonntag,
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: CSV Anzahl der Zeilen

Beitrag von Pure_Beginner »

@ts-soft,

ja werd sie zweimal durchlaufen is kein großes Ding.
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: CSV Anzahl der Zeilen

Beitrag von Bisonte »

Ist gar nicht notwendig, zweimal durchzurauschen.
Ich schätze, du möchtest deine Textzeilen in einem Array speichern und benötigst daher die Anzahl vor dem einlesen.

Geht auch ein wenig anders... mit Linklists

Beispiel:

Code: Alles auswählen

EnableExplicit

Define NewList CSV.s()

Procedure ReadCSV(FileName.s, List Zeile.s())
  
  Protected hFile
  
  ClearList(Zeile())
  
  hFile = ReadFile(#PB_Any, FileName)
  If hFile  
    While Not Eof(hFile)
      AddElement(Zeile())
      Zeile() = ReadString(hFile)
    Wend
    CloseFile(hFile)
  EndIf  
  
  ProcedureReturn ListSize(Zeile()) ; Wenn alles geklappt hat ist hier die Anzahl der Zeilen drin
  
EndProcedure

Procedure.s GetCSV_Zeile(ZeilenIndex, List Zeile.s())
  
  Protected Ausgabe.s = ""
  
  ; Teste auf ZeilenAnzahl -1, weil ein ListenIndex mit 0 beginnt, ListSize() aber "richtig" zählt
  If ZeilenIndex => 0 And ZeilenIndex <= (ListSize(Zeile()) - 1)
    SelectElement(Zeile(), ZeilenIndex)
    Ausgabe = Zeile()
  EndIf
  
  ProcedureReturn Ausgabe
  
EndProcedure

;:- Nun kann man auf die Linklist wie auf ein Array zugreifen ( Beinahe ;) )

If ReadCSV("meine.csv", CSV()) ; << Einlesen
  Debug GetCSV_Zeile(10, CSV()) ; << Zeile 10 ausgeben
EndIf
Dabei muss man natürlich beachten, dass die Zeilennummerierung mit 0 beginnt und nicht mit 1
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
Pure_Beginner
Beiträge: 247
Registriert: 29.09.2011 21:49
Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
Wohnort: Brühl

Re: CSV Anzahl der Zeilen

Beitrag von Pure_Beginner »

@Bisonte,

funktioniert, habs gleich ausprobiert.

Besten Bank für die Tipps.

Schönen Sonntag
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Antworten