German Datei einlesen (ReadLine)

torpedo

Member
Licensed User
Longtime User
hallo zusammen

habe bei mir ein komisches verhalten mit den dateien.

ich habe eine datei die wie folgt aufgebaut ist:
zeile 1 hubert
zeile 2 horst
zeile 3 peter
zeile 4 urs
.
.
.

so, diese datei lese ich wie folgt ein:
line = TR1.ReadLine

folgendes problem:
die zeilen werden jeweils in die variable "line" eingelesen. soweit so gut, doch wenn der loop wieder auf den obigen befehl kommt, dann erscheint erst eine leerzeile, also die variabel "line" ist leer. beim erneuten lesen mit dem obigen befehl ist die nächste zeile richtig eingelesen. keine ahnung warum das so ist, könnte aber damit leben, denn ich suche eine bestimmte zeile mit einem bestimmten wert aus der datei.

ich vergleiche also den zeileninhalt folgendermassen:
if line.IndexOf("horst") > -1 then
.
.
.
end if

wenn ich die eingelesene zeile in einem label anzeige, dann sieht es aus als ob leerzeichen zwischen den einzelnen buchstaben wären. sind es aber nicht, habe extra mal einen replace versucht. blieb aber auch erfolglos.

wenn ich also die "zeile 2 horst" eingelesen habe, durchsuche ich den eingelesenen string mit "horst". sollte doch einen treffer geben, doch der rückgabewert bleibt immer -1. somit wird meine if-schleife nie ausgeführt.

kann mir einer erklären warum dieses komische verhalten vorliegt?

besten dank für antworten
 

klaus

Expert
Licensed User
Longtime User
Ich habe mir Dein Programm angeschaut.
Es fehlt in Zeile 89 irgend ein If Then Befehl.
Habe einen reingemacht damit das Programm läuft.
Die Zeileninhalte Deiner Datei sahen 'komisch' aus.
Habe dann gesehen dass die tabelle.txt Datei in Unicode gespeichert wurde, ist das gewollt ?
Habe sie mit UTF-8 Code gespeichert, da sieht das nomaler aus.

Beste Grüsse.
 

torpedo

Member
Licensed User
Longtime User
Der Zeileninhalt der Datei sah komisch aus? Warum denn das? Ich habe doch lediglich mit dem editor von Windows eine Textdatei erstellt. Ist ja nur zu Testzwecken so.

Kann man denn beim einlesen mit dem "ReadLine" in UTF-8 umwandeln. oder muss man das schon beim Befehl "OpenInput", also beim öffnen der Datei mitgeben?

Ich habe schon x Varianten von Code durchprobiert, doch der Compiler kommt immer auf nen Fehler.
 

klaus

Expert
Licensed User
Longtime User
Ich habe doch lediglich mit dem editor von Windows eine Textdatei erstellt.
Mit welchem Texteditor hast Du die Datei erstellt ?
Ich habe sie mit dem NotePad gelesen und da gesehen dass die mit Unicode gespeichert wurde und nicht mit UTF-8. Habe sie dann vom NotePad mit UTF-8 gespeichert und es funktionierte.

Kann man denn beim einlesen mit dem "ReadLine" in UTF-8 umwandeln. oder muss man das schon beim Befehl "OpenInput", also beim öffnen der Datei mitgeben?
Ja, aber Du musst folgende Zeile eingeben, mit dem CharacterSet der Originaldatei:
B4X:
[FONT=Courier New][SIZE=2][SIZE=2]TR1.Initialize2([/SIZE][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]File[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][SIZE=2].OpenInput([/SIZE][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]File[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][SIZE=2].DirAssets, [/SIZE][/SIZE][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000]"tabelle.txt"[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][SIZE=2]),[/SIZE][/SIZE][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000]"UTF-16"[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][SIZE=2])[/SIZE][/SIZE][/FONT]
Das funktioniiert mit Deiner Originaldatei.

Und nicht:
B4X:
[FONT=Courier New]TR1.Initialize([SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]File[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][SIZE=2].OpenInput([/SIZE][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]File[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][SIZE=2].DirAssets, [/SIZE][/SIZE][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000][SIZE=2][COLOR=#800000]"tabelle.txt"[/COLOR][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][SIZE=2])[/SIZE][/SIZE][SIZE=2][SIZE=2])[/SIZE][/SIZE][/FONT]

Beste Grüsse.
 
Last edited:
Top