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