csv- Datei auslesen
csv- Datei auslesen
Kann mir jemand einen Ansatz zeigen, wie ich eine ASCII Datei, die mit Semikolon separierten Feldern gefüllt ist, auslesen kann ? In ein Array ? Jetzt schon vielen Dank für Eure Mühe ...
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Ok:
Ich nehme jetzt an, dass die Datei so einen String enthält:
Ich nehme jetzt mal an, dass eine Data (also zwischen zwei
keinen Zeilenumbruch enthalten kann (sonst muss man es noch ein wenig umbauen):
Das bedeutet also, dass solange eine Linie von der Datei eingelesen wird, bis das Ende der Datei erreicht wurde.
Nun muss mann dieses Line.s noch verarbeiten:
zuerst sollte man rausfinden wie viele Datensätze enthalten sind:
und nun wird der String Line in einer For-Schleife in die Einzelteile zerhackt:
Jetzt muss noch ein Zähler x rein für das aktuelle Arrayelement und dann kann das Array gefüllt werden:
Wenn das nicht reicht, poste ich noch ein zusammenhängendes Beispiel!
greetz
remi
Ich nehme jetzt an, dass die Datei so einen String enthält:
Dann öffnet man die Datei zuerst mitData1;Noch was;Das Ende
NochneDate;nochetwas;jetzt wirklich das ende
Code: Alles auswählen
OpenFile(0, "Name.txt")

Code: Alles auswählen
While Eof(0) = 0
Line.s = ReadString()
;Das was hier kommt steht unten
Wend
Nun muss mann dieses Line.s noch verarbeiten:
zuerst sollte man rausfinden wie viele Datensätze enthalten sind:
Code: Alles auswählen
Anz.l = CountString(Line, ";") + 1;vielleicht ohne +1
Code: Alles auswählen
For z = 1 to Anz
Data.s = StringField(Line, z)
Next
Code: Alles auswählen
Array(x) = Data
Wenn das nicht reicht, poste ich noch ein zusammenhängendes Beispiel!
greetz
remi
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Code: Alles auswählen
File.s = "C:\Test.txt"
If OpenFile(0, File)
Dim Daten.s(2, 1) ;wenn nicht bekannt, müssen zuerst die ganze datei eingelesen
; und die datensätze gezählt werden
x.l = 0 ; für Daten(x, y) ein zähler
y.l = 0
While Eof(0) = 0
Line.s = ReadString()
AnzDatas.l = CountString(Line, ";") + 1 ;ev. ohne +1, wenn am ende der zeile auch ein ; steht
For z.l = 1 To AnzDatas
Daten(x,y) = StringField(Line.s, z.l, ";")
Debug Daten(x,y)
x + 1 ;eine neue spalte beginnt
Next
x = 0 ;wieder mit spalte 1 beginnen
y + 1 ;eine neue zeile beginnt
Wend
EndIf
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz