German bestimmte Zeile aus txt Datei einlesen

MisterRieus

Member
Licensed User
Longtime User
Habe einen Ordner mit txt Dateien.
Diese werden in ein Spinner7 eingelesen.
B4X:
Dim List1 As List
    List1 = File.ListFiles (File.DirRootExternal  & "/simu/")
   List1.Sort(True)
Wenn SelectedIndex = 1 dann
B4X:
If Spinner7.SelectedIndex = 1 Then
Spinner1 = 3. Zeile aus der SelectedIndex = 1.
Nun soll aus der ausgewählten 1. txt.Datei die 3. Zeile im Spinner1 stehen.

Es geht nicht darum wie die txt Datei heißt sondern welche txt Datei es ist.
Also ob es die erste oder zweite im Ordner ist.

Hoffe ihr könnt mein Problem verstehen :)
 

muopc

Member
Licensed User
Longtime User
Hoffe ihr könnt mein Problem verstehen :)

Nein, aber ich probiers trotzdem.

B4X:
Dim tmplst as list
tmplst = File.Readlist(ordner,datei.txt)
tmplst.Get(2) 'gibt die dritte Zeile der Datei aus

Nur ausm Kopf, ohne garantie, aber garantiert unvollständig.

Grüßle
 

MisterRieus

Member
Licensed User
Longtime User
Vom Prinzip schonmal ganz gut, bis auf das man nicht weiß wie
die txt. Datei heißt.
Wenn das ausgewählte Index des Spinners7 = 2 dann
muss auch die 2. txt Datei aus dem Ordner eingelesen werden
und von der dann die 3. Zeile muss der Inhalt des Spinners1 sein.
Ich hoffe das geht überhaupt irgendwie.
 

muopc

Member
Licensed User
Longtime User
Dazu machst du einfach folgendes.

B4X:
Dim liste as List
Dim datei as String
liste = File.ListFiles(dein ordner)
datei = liste.Get(Nummer der Datei)

Dim tmplst as list
tmplst = File.Readlist(ordner,datei) ' datei ist die Variable nicht ändern!
tmplst.Get(2) 'gibt die dritte Zeile der Datei aus

Und schon hast du alle Dateien vom Ordner in einer Liste und in "datei" die entsprechende Datei die du ausgewählt hast
 

MisterRieus

Member
Licensed User
Longtime User
B4X:
Dim liste As List
Dim datei As String
liste = File.ListFiles(File.DirRootExternal  & "/simu/")
datei = liste.Get(2)

Dim tmplst As List
tmplst = File.Readlist(File.DirRootExternal  & "/simu/",datei)
tmplst.Get(3) 
spinner1.add(tmplst)

Fehlermeldung:
programm paused on line 81

line81 = tmplst.Get(3)
 

muopc

Member
Licensed User
Longtime User
Jap, kleines Missverständnis
lösche Zeile 81 und verändere Zeile 82 so:

Spinner1.Add(tmplst.Get(3))

Zeile 81 erzeugt nur das Ergebnis, da es aber keiner Variable oder eben dem Spinner zugewiesen wird kommt es zum Fehler
 

MisterRieus

Member
Licensed User
Longtime User
Hab es jetzt wie folgt gelöst.

B4X:
Sub Activity_Create(FirstTime As Boolean)
   'Do not forget to load the layout file created with the visual designer. For example:
   'Activity.LoadLayout("Layout1")
   Activity.LoadLayout("mainsimu")
      spinner1.AddAll(Array As String("3-3-4","3-4-3","3-5-2","4-2-4","4-3-3","4-4-2","4-5-1","5-2-3","5-3-2","5-4-1"))
End Sub
If Spinner7.SelectedIndex = 2 Then
Dim liste As List
Dim datei As String
liste = File.ListFiles(File.DirRootExternal  & "/simu/")
liste.Sort(True)
datei = liste.Get(2)
Dim tmplst As List
tmplst = File.Readlist(File.DirRootExternal  & "/simu/",datei)
spinner1.Add(tmplst.Get(1))
End If

Problem ist nur, dass das geaddete Item natürlich ans Ende des Spinners kommt. Es soll aber das SelectedItem sein.
Zurzeit mach ich das so:
B4X:
If datei2 = "3-3-4" Then
spinner1.SelectedIndex = 0
Else datei2 ="3-4-3" Then
spinner1.SelectedIndex = 1
Else datei2 ="3-5-2" Then
spinner1.SelectedIndex = 2
Else datei2 ="4-2-4" Then
spinner1.SelectedIndex = 3
Else datei2 ="4-3-3" Then
spinner1.SelectedIndex = 4
Else datei2 ="4-4-2" Then
spinner1.SelectedIndex = 5
Else datei2 ="4-5-1" Then
spinner1.SelectedIndex = 6
Else datei2 ="5-2-3" Then
spinner1.SelectedIndex = 7
Else datei2 ="5-3-2" Then
spinner1.SelectedIndex = 8
Else datei2 ="5-4-1" Then
spinner1.SelectedIndex = 9
End If
Ist aber auch nicht so das Wahre.
Müsste doch auch kürzer gehen...
 

muopc

Member
Licensed User
Longtime User
Wie ich das sehe hat der Spinner bereits die Daten aus den txt Dateien.

Dann brauchst du nur die gelesenen Zeilen abgleichen.

B4X:
var1 = Spinner.IndexOf("wert aus der txt")
Spinner1.selectedindex = var1

Grüße
 

MisterRieus

Member
Licensed User
Longtime User
B4X:
   If Spinner7.SelectedIndex = 0 Then
Dim liste As List
Dim datei As String
liste = File.ListFiles(File.DirRootExternal  & "/simu/")
liste.Sort(True)
datei = liste.Get(0)
Dim tmplst As List
tmplst = File.Readlist(File.DirRootExternal  & "/simu/",datei)
tmplst.Get(1)
Dim var1 As String
var1 = spinner1.IndexOf(File.DirRootExternal  & "/simu/","Formation.txt")
spinner1.selectedindex = var1
End If

Hab das jetzt so versucht kommt aber folgende Fehlermeldung:
B4X:
Parsing code.                           0.00
Compiling code.                         Error
Error compiling program.
Error description: Too many parameters.
Occurred on line: 102
var1 = spinner1.IndexOf(File.DirRootExternal  & "/simu/","Formation.txt")
Word: Formation.txt

Wo ist der blöde Fehler? :-(
 

muopc

Member
Licensed User
Longtime User
Das müsste gehen.
B4X:
var1 = spinner1.IndexOf(tmplst.Get(1))
spinner1.selectedindex = var1

tmplst.Get(1) gibt dir einen Wert, String oder was auch immer da eben steht, aber du verarbeitest diesen wert in deinem code nicht.

Grüße
 

MisterRieus

Member
Licensed User
Longtime User
Vielen vielen Dank. Hat mir echt sehr geholfen und bringt mich weiter.
Hab das jetzt so geregelt:

B4X:
Sub Spinner8_ItemClick (Position As Int, Value As Object)
   If Spinner8.SelectedIndex = 0 Then
Dim liste As List
Dim datei As String
liste = File.ListFiles(File.DirRootExternal  & "/simu/Mannschaften")
liste.Sort(True)
datei = liste.Get(0)
Dim tmplst As List
tmplst = File.Readlist(File.DirRootExternal  & "/simu/Mannschaften",datei)
Dim var1 As String
var1 = Spinner6.IndexOf(tmplst.Get(1))
Spinner6.selectedindex = var1
Dim var2 As String
var2 = Spinner5.IndexOf(tmplst.Get(4))
Spinner5.selectedindex = var2
Dim var3 As String
var3 = Spinner4.IndexOf(tmplst.Get(7))
Spinner4.selectedindex = var3
end sub
 
Top