readLine-Problem


Basic
Ekkart Kleinod  • 

Wenn eine Datei zeilenweise eingelesen wird, kann diese Datei Leerzeilen enthalten. Die readLine-Methode liefert bei diesen Zeilen (laut Doku) einen leeren String zurück.

Das gilt leider nur, wenn die leere Zeile nicht am Dateiende steht. Falls eine leere Zeile am Dateiende steht, wird nur dann ein leerer String zurückgegeben, wenn als Zeilenendezeichen CR+LF verwendet wird, wie in Windows üblich. Die Zeilentrenner von Linux LF und Mac CR werden per readLine zurückgegeben.

Wenn man also eine Datei zeilenweise behandeln will und leere Zeilen ignorieren/überspringen, kann man folgenden Code verwenden (Öffnen der Streams siehe Dateiströme):

sInputLine = Trim(oTextInputStream.readLine())
' Fehler in OOo: leere Zeile kann als Chr(10) oder Chr(13) eingelesen werden
If ((sInputLine = Chr(10)) OR (sInputLine = Chr(13))) Then
    sInputLine = ""
End If

Do Until oTextInputStream.isEOF() AND sInputLine = ""
    If (sInputLine <> "") Then
        ' hier etwas mit der Zeile anstellen
    End If

    sInputLine = Trim(oTextInputStream.readLine())
    ' Fehler in OOo: leere Zeile kann als Chr(10) oder Chr(13) eingelesen werden
    If ((sInputLine = Chr(10)) OR (sInputLine = Chr(13))) Then
        sInputLine = ""
    End If
Loop