Seite 1 von 2

CSV Anzahl der Zeilen

Verfasst: 24.11.2013 11:38
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

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 11:47
von ts-soft
Zeilen einlesen und dabei Zählen!

oder was hast Du erwartet?

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 11:50
von Pure_Beginner
@ts-soft

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

Grüße
Christian

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 11:55
von Pure_Beginner
also was ich meine ist, kann ich die Zeilen vorher counten ohne alles einzulesen ?

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 12:11
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.

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 12:16
von Pure_Beginner
@ts-soft,

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

Schönen Sonntag
Christian

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 12:22
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

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 13:04
von Pure_Beginner
@ts-soft,

ja werd sie zweimal durchlaufen is kein großes Ding.

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 13:08
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

Re: CSV Anzahl der Zeilen

Verfasst: 24.11.2013 13:20
von Pure_Beginner
@Bisonte,

funktioniert, habs gleich ausprobiert.

Besten Bank für die Tipps.

Schönen Sonntag
Christian