Hallo an alle!
Ich habe folgenden Code, der mir einen Ordner nach Dateien durchsucht und mir deren Inhalt in eine Liste packt.
Die auskommentierten Codeteile sind versuche das ganze Irgendwie gangbar zu machen. Duplizierte Variablen dienen nur der Übersichtlichkeit beim debuggen
Beim aufrufen der vorletzten Zeile entsteht immer folgender Fehler:
Alternativ hab ichs auch geschafft, das die Exception lautet:
Weiß jemand warum er die Liste mit den Strings nicht als Strings oder eben Liste verarbeitet?
Für Tipps bin ich sehr dankbar.
Grüße muopc
Ich habe folgenden Code, der mir einen Ordner nach Dateien durchsucht und mir deren Inhalt in eine Liste packt.
B4X:
Sub export (ex As String)
'Vorbereitung der vars und dialog
Dim su As StringUtils
Dim eval As Evaluator
eval.Initialize
'Dim files As StringBuilder
'sb.Initialize
Dim head,j,files,tmplst As List
head.Initialize
j.Initialize
files.Initialize
tmplst.Initialize
head.AddAll(Array As String("Raum","Wand+Fläche","Formel","Fläche;"))
Dim fd As FileDialog
fd.ShowOnlyFolders = True
fd.FilePath = "/mnt/sdcard"
'fd.Show("Export nach","Ok","Abbruch","",Null)
Dim n,o,q,r,s,t,u As String
n = fd.FilePath
listenfile(p & "/" & ex,False)
'Ablauf 1.ebene dateiweise
For i = 0 To lst.Size -1
Dim tmp1 As String
tmp1 = lst.Get(i)
j = File.ReadList(p & "/" & ex,tmp1)
'Ablauf 2.ebene Zeilenweise
For l = 0 To j.Size -1
Dim y As String
y = j.Get(l)
'Array mit Wänden erstellen
If y.StartsWith(tmp1) Then
files.Clear
'r = tmp1
files.Add(Chr(34) & tmp1 & Chr(34))
y = y.SubString2(0,y.IndexOf("=")) 'Wand
o = ReadIni("Formel" & y,p & "/" & ex,tmp1) 'Formel
's = y.Replace(tmp1,"") & "(" & o & ")"
files.Add(Chr(34) & y.SubString(y.LastIndexOf("W")) & "(" & o & ")" & Chr(34))
x = ReadIni(y,p & "/" & ex,tmp1) 'Wert
t = x
files.Add(Chr(34) & x & Chr(34))
q = NumberFormat(eval.Evaluate(x),0,2)
u = q
'tmplst.Add(r & s & t & u & CRLF)
files.Add(Chr(34) & q & Chr(34)) 'Fläche berechnen
'su.SaveCSV(n,ex & "1.csv",",",files)
tmplst.Add(files)
End If
Next
'Msgbox(files,"")
File.WriteList(n,ex & ".csv",tmplst)
Next
Msgbox(files,"")
'File.Writelist(n,ex & ".csv",tmplst)
'files.Clear
su.SaveCSV(n,ex & "1.csv",",",tmplst)
ToastMessageShow("Export abgeschlossen",True)
End Sub
Die auskommentierten Codeteile sind versuche das ganze Irgendwie gangbar zu machen. Duplizierte Variablen dienen nur der Übersichtlichkeit beim debuggen
Beim aufrufen der vorletzten Zeile entsteht immer folgender Fehler:
B4X:
main_export (B4A line: 172)
su.SaveCSV(n,ex & "1.csv",",",tmplst)
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String[]
at anywheresoftware.b4a.objects.StringUtils.SaveCSV2(StringUtils.java:89)
at anywheresoftware.b4a.objects.StringUtils.SaveCSV(StringUtils.java:82)
at aufmass.tablet.main._export(main.java:626)
at aufmass.tablet.main._listview1_itemlongclick(main.java:939)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:167)
at anywheresoftware.b4a.BA$2.run(BA.java:268)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.String[]
Alternativ hab ichs auch geschafft, das die Exception lautet:
B4X:
java.lang.ClassCastException: java.util.String cannot be cast to java.lang.String[]
Weiß jemand warum er die Liste mit den Strings nicht als Strings oder eben Liste verarbeitet?
Für Tipps bin ich sehr dankbar.
Grüße muopc