German Daten einlesen Indexdatei / Textdatei

Petrus

Member
Licensed User
Longtime User
Hallo!
Ich habe zwei Dateien - eine Textdatei mit 50 Textabschnitten und eine Indexdatei, in der die Position und die Länge der Textabschnitte steht (jeweils als 4-Byte-Zahl).

1.) Wie kann ich die Indexdatei insgesamt auslesen und die Werte in ein Array schreiben?
Dim Index(99) As Int
...

2.) Wie muss ich auf die Textdatei zugreifen, um einen bestimmten Textabschnitt auszulesen - z.B. den zweiten Textabschnitt?
Dim Position, Laenge as Int
Dim Textabschnitt as String

Position = Index(2)
Laenge = Index(3)

...

Ich beschäftige mich erst seit ein paar Tagen mit b4a und gehöre daher noch zu den absolut Ahnungslosen!

Vielen Dank im Voraus
Peter
 

Kiffi

Well-Known Member
Licensed User
Longtime User
Deine Index-Datei kannst Du erst einmal mit ReadList in einem Rutsch in
eine List einlesen:
B4X:
Dim List1 As List
Dim I As Int

List1 = File.ReadList(File.DirDefaultExternal, "1.txt")

For I = 0 To List1.Size-1
  Log(List1.Get(I))
Next

danach könntest Du den Inhalt der zweiten Datei in einen String laden:
B4X:
Dim text As String
text = File.ReadString(File.DirDefaultExternal, "2.txt")

Und dann kannst Du mit text.SubString2() auf die in List1 gespeicherten
Positionen zugreifen.

(ist natürlich nicht speicherschonend; vielleicht gibt's bessere Lösungen)

Grüße ... Kiffi
 

Petrus

Member
Licensed User
Longtime User
Hallo Kiffi,

vielen Dank für die schnelle Antwort!

Leider funktioniert das so nicht. Die Indexdatei ist keine Textdatei, sondern eine Binärdatei, in der nur Zahlen stehen (Int-Werte). Ich wüsste gerne, wie man die Int-Werte auslesen kann.

Mit der Textdatei ist es so, dass die 5MB groß ist (das mit den 50 Abschnitten war nur als Beispiel gedacht - real sind es ca. 2000)

Viele Grüße
Peter
 

Kiffi

Well-Known Member
Licensed User
Longtime User
Hallo Namensvetter,

wenn das unveränderliche Dateien sind, kannst Du ja überlegen,
diese einmalig außerhalb von Android (also auf Deinem PC, wo
Du mehr Möglichkeiten hast) in eine SQLite-Datenbank zu
konvertieren. Der Zugriff von Deinem Device auf die Datenbank
ist dann ein Kinderspiel.

Grüße ... Kiffi
 

Petrus

Member
Licensed User
Longtime User
Danke für den Tipp! Ich erstelle ja die Datendateien mit VB6 selbst und kann diese auch so ändern, dass die Zahlen als String in der Datei stehen - es wäre anders nur einfacher gewesen.

Viele Grüße
Peter
 
Top