normank Member Licensed User Longtime User Nov 11, 2012 #1 Hallo Forum, ich brauche Hilfe, ich hab gerade ein Brett vor dem Kopf: Ich will Daten aus einer CSV-Datei lesen, die Eintrage pro Zeile sind unterschiedlich lang, ich habe fogenden Quelltext gebastelt: PHP: Sub Globals Dim StringUtils1 As StringUtils Dim List1 As List End Sub Sub Process_Globals End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout ("readcsv") List1.Initialize ReadCSV End Sub Sub ReadCSV If File.Exists(File.DirAssets, "value.csv") Then List1 = StringUtils1.LoadCSV(File.DirAssets, "value.csv", ",") Else Msgbox("Datei fehlt ","Datei") End If For i = 0 To List1.Size - 1 Dim VString() As String VString = List1.Get(i) Msgbox("VString.length= "& VString .Length,"i= " & i) Next End Sub Die CSV-Datei sieht so aus: PHP: Anton,Berta,Caesar,Dora,Emil 1,2,3,4,5,6,7,8,9,0 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z Die Sub soll Zeile für Zeile die Datei lesen und in das String-Array VString eintragen, danach soll in der Msgbox die Länge des Array angezeigt werden. Mein Problem ist, daß das Array immer die Länge der ersten Zeile hat. In meinem Beispiel also 5 auch beim zweiten und dritten Schleifendurchlauf und nicht wie erwartet 10 bzw. 26, Gebt mir bitte mal nen Tipp , irgedwie sehe ich meinen Fehler nicht! Norman Attachments ReadCSV.zip ReadCSV.zip 6.3 KB · Views: 514
Hallo Forum, ich brauche Hilfe, ich hab gerade ein Brett vor dem Kopf: Ich will Daten aus einer CSV-Datei lesen, die Eintrage pro Zeile sind unterschiedlich lang, ich habe fogenden Quelltext gebastelt: PHP: Sub Globals Dim StringUtils1 As StringUtils Dim List1 As List End Sub Sub Process_Globals End Sub Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout ("readcsv") List1.Initialize ReadCSV End Sub Sub ReadCSV If File.Exists(File.DirAssets, "value.csv") Then List1 = StringUtils1.LoadCSV(File.DirAssets, "value.csv", ",") Else Msgbox("Datei fehlt ","Datei") End If For i = 0 To List1.Size - 1 Dim VString() As String VString = List1.Get(i) Msgbox("VString.length= "& VString .Length,"i= " & i) Next End Sub Die CSV-Datei sieht so aus: PHP: Anton,Berta,Caesar,Dora,Emil 1,2,3,4,5,6,7,8,9,0 a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z Die Sub soll Zeile für Zeile die Datei lesen und in das String-Array VString eintragen, danach soll in der Msgbox die Länge des Array angezeigt werden. Mein Problem ist, daß das Array immer die Länge der ersten Zeile hat. In meinem Beispiel also 5 auch beim zweiten und dritten Schleifendurchlauf und nicht wie erwartet 10 bzw. 26, Gebt mir bitte mal nen Tipp , irgedwie sehe ich meinen Fehler nicht! Norman
klaus Expert Licensed User Longtime User Nov 11, 2012 #2 Mit der LoadCSV Routine haben leider alle Inhalte die gleiche Länge. Folgender Code funktioniert: Code: Sub ReadCSV If File.Exists(File.DirAssets, "value.csv") Then Dim i As Int Dim tr As TextReader Dim List1 As List tr.Initialize(File.OpenInput(File.DirAssets, "value.csv")) ' diese Zeile erlaubt das laden von Dateien mit ANSI encoding ' tr.Initialize2(File.OpenInput(File.DirAssets, "value.csv"), "ISO-8859-1 ") List1 = tr.ReadList For i = 0 To List1.Size - 1 Dim VString() As String VString = Regex.Split(",", List1.Get(i)) Msgbox("VString.length= "& VString .Length,"i= " & i) Next Else Msgbox("Datei fehlt ","Datei") End If End Sub Beste Grüsse.
Mit der LoadCSV Routine haben leider alle Inhalte die gleiche Länge. Folgender Code funktioniert: Code: Sub ReadCSV If File.Exists(File.DirAssets, "value.csv") Then Dim i As Int Dim tr As TextReader Dim List1 As List tr.Initialize(File.OpenInput(File.DirAssets, "value.csv")) ' diese Zeile erlaubt das laden von Dateien mit ANSI encoding ' tr.Initialize2(File.OpenInput(File.DirAssets, "value.csv"), "ISO-8859-1 ") List1 = tr.ReadList For i = 0 To List1.Size - 1 Dim VString() As String VString = Regex.Split(",", List1.Get(i)) Msgbox("VString.length= "& VString .Length,"i= " & i) Next Else Msgbox("Datei fehlt ","Datei") End If End Sub Beste Grüsse.
normank Member Licensed User Longtime User Nov 11, 2012 #3 csv Danke Klaus für die promte Antwort, dein Vorschlag hat mir wirklich geholfen, es funktioniert wie erwartet. Die Funktion der SUB kann man so besser erkennen, gefällt mir! Norman:sign0098::sign0098:
csv Danke Klaus für die promte Antwort, dein Vorschlag hat mir wirklich geholfen, es funktioniert wie erwartet. Die Funktion der SUB kann man so besser erkennen, gefällt mir! Norman:sign0098::sign0098: