Zeilenumbruch in TextArea

Hallo in die Runde.
Ich habe ein Textarea und möchte darin die erste Zeile in Fett ausgeben. Somit habe ich diesen Code in das TextChange-Event geschrieben:
dim i,s,l as integer
dim t as String

s=EditField2.SelStart
l=EditField2.SelLength
EditField2.TextSize=13
t=EndOfLine
t=NthField(EditField2.text,EndOfLine,1)
EditField2.SelStart=0
EditField2.SelLength=len(t)
EditField2.SelBold=true
EditField2.SelTextSize=13
EditField2.SelStart=s
EditField2.SelLength=l

Das funtkioniert hier auf dem Mac prima. Unter Windows leider nicht. Eine kurze Analyse ergab, dass Unter Windwos Endofline andere Werte enthält, als TextArea für den Zeileumbruch nutzt. Ist das Absicht?

Ich bin davon ausgegangen, dass EndOfLine imme den Zeilenende-Code des Betriebssystems nutzt und ich mit damit dann keine Gedanken mehr machen muss, welche die richtigen Zeichen für das Zeilenende sind.

Kann mir das mal einer erklären?

Anstelle von EndOfLine einfach das Unicodezeichen &uA nehmen :wink:

Für welches Betriebssystem?
In der Languagereferenz steht:
The end of line String for the platform being compiled.

The Macintosh line ending, Chr(13).
The Unix line ending, Chr(10). This line ending is used by OS X and Linux.
The Windows line ending, Chr(13)+Chr(10).

Unter Windows wird aber nur Chr(13) als Zeilenende in der TextArea benutzt :frowning:
Darum funktioniert mein oben gezeigter Code nicht.

Gruß, Stefan Mettenbrink.

Ich habe mir für macOS und Windows eine Funktion für Hilfetexte in einer TextArea gebaut, bei der ich über StyleRun alle Attribute des Textes ziehe. Die speichere ich neben dem Text in einer Datenbank. Beim Anzeigen des Textes füge ich zu dem gespeicherten Text und dessen Attributen noch weiteren Text und Attribute (Farbe, Schriftgröße, Fettschrift usw.) hinzu. Dabei muß ich in Windows für jede hinzu kommende Zeile ein zusätzliches Byte rechnen (wg. CR+LF), sonst gibt es eine Verschiebung in den Attributen.

Vielleicht hilft das?

Eigentlich hatte ich gehofft, dass jemand mein Verstndnis zu EndOfLine teilt und in TextAreas ebenfalls EndOfLine als Zeilenumbruch erwarten wrde. Dann wrde ich das als Fehler melden und auf Korrektur hoffen.

Derzeit helfe ich mir damit, dass ich eine eigene Variable mit dem korrekten (in TextArea genutztem) Zeilenumbruch nutze.

Es ist ja (nur) das getippte Return, das nicht dem EndOfLine entspricht. Wenn Du ein EndOfLine in die TextArea einfügst, funktioniert das auch. Aber ich gebe Dir Recht, zu erwarten wären unter Windows zwei Bytes, wie sie EndOfLine liefert.
Damit das Ganze plattformübergreifend funktioniert, sollten aber immer vorher per ReplaceLineEndings() die Zeilenschalter konvertiert werden. Danach kannst Du problemlos mit EndOfLine arbeiten.

Endofline ist schon okay, aber danach suchen geht nur nach dem Normalisieren.

Zu diesem Text möchte ich ein “Like” setzen. :slight_smile: