Jedes Betriebssystem hat seine eigenen Vorlieben, was Zeilenumbrüche angeht. Während unter Linux und Mac das ASCII-Zeichen 10 (LF) der Standard-Zeilenumbruch ist, nutzt Windows die Kombination der beiden Zeichen 13/10 (CR/LF).
Um dieser Tatsache gerecht zu werden und auf jedem Betriebssystem den richtigen Zeilenumbruch zu nutzen, könnte man auf die Idee kommen, eine entsprechende Konstante oder Variable in LotusScript zu definieren, die sozusagen das Betriebssystem entscheiden lässt, was es als Zeilenumbruch ansieht. Dazu wäre es naheliegend
NEWLINE = |
|
zu setzen und dabei zu erwarten, dass je nach Server/Rechner, wo der Code ausgeführt wird, die Variable den betriebssystemspezifischen Wert enthält. Ein genauerer Blick zeigt jedoch: Sowohl unter Linux als auch unter Windows besteht die Variable nur aus dem LF-Zeichen. Die Nutzung dieser Variablen zum Erzeugen von Zeilenumbrüchen ist in der Praxis jedoch unproblematisch, denn Notes speichert den gewünschten Text stets korrekt ab.
Nachdem wir einen ersten Blick auf den schreibenden Zugriff geworfen haben, folgt nun der lesende Zugriff. Hier stellt sich heraus, dass es tatsächlich vom Betriebssystem abhängige Unterschiede gibt. Unter Windows erhält man stets die Kombination CR LF, unter Linux den einfachen LF, wenn man ein und das selbe Feld eines Dokuments ausliest. Folgende Tabelle fasst zusammen, welche Werte Notes unter Windows ausliest, abhängig davon, was man als Zeilenumbruch in das Feld geschrieben hat.
schreibend | lesend (Windows) | lesend (Linux) |
---|---|---|
LF | CR LF | LF |
CR | CR LF | LF |
CR LF | CR LF | LF |
LF CR | CR LF CR LF | LF LF |
Somit ist es auf den ersten Blick "fast" egal, welche(s) Zeichen man beim Schreiben von Feldinhalten nutzt. Einzig LF CR sollte man nicht nutzen, weil es als doppelter Zeilenumbruch interpretiert wird.
Auf den zweiten Blick kann die Entscheidung über den richtigen Zeilenumbruch aber doch eine Rolle spielen: Nämlich dann, wenn man Input und Output vergleichen möchte. Nehmen wir als Beispiel ein Feld, das die vollständige Anschrift eines Datensatzes enthält und welches periodisch jede Nacht auf Aktualität (abhängig von anderen Feldern) geprüft wird. Dann ist es sinnvoll, nicht alle Anschrift-Felder bei jedem Agentendurchlauf zu überschreiben und die Dokumente zu speichern. Denn einerseits verursacht das unnötigen Rechenaufwand. Andererseits ist dadurch schwieriger nachzuvollziehen, wann wirklich jemand aus triftigem Grund das entsprechende Dokument bearbeitet und gespeichert hat. Hier sollte also beim Vergleich der Strings beachten, welche Art von Zeilenumbruch das Betriebssystem beim Auslesen verwendet, um den Vergleichsstring auf dieselbe Weise zu bauen.
Aus diesem Grund nutzen wir eine Variable newLine
in unserem Notes-Framework die zur Laufzeit in einer Basis-Skriptbibliothek auf genau den Wert gesetzt wird, den das Betriebssystem nutzt. Somit müssen wir uns beim Programmieren von Strings mit Zeilenumbrüchen keine Gedanken über etwaige Codierungen machen, sondern können uns auf die Korrektheit der Variablen verlassen.
Sie haben weitere Fragen?
Gerne informieren wir Sie in einem kostenlosen Beratungsgespräch über unsere Angebote. Kontaktieren Sie uns dafür gerne unter +49 4307 900 408 oder vereinbaren Sie hier einen Termin.