readLine-Problem


Basic

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 oben):

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