AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung [FMX] Korrekter Umgang mit Linebreak unter verschiedenen Plattformen
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX] Korrekter Umgang mit Linebreak unter verschiedenen Plattformen

Ein Thema von Rollo62 · begonnen am 8. Sep 2020 · letzter Beitrag vom 8. Sep 2020
 
Rollo62

Registriert seit: 15. Mär 2007
4.166 Beiträge
 
Delphi 12 Athens
 
#1

[FMX] Korrekter Umgang mit Linebreak unter verschiedenen Plattformen

  Alt 8. Sep 2020, 09:38
Hallo zusammen,

ja nach Platform gibt es unterschiedliche Linebreaks, also Windows CrLf, eigentlich alle anderen Platformen nutzen nur jeweils ein Zeichen Cr bzw. Lf.

Um das zu kapseln gibt es die sLinebreak Konstante, die das jeweils gültige LineBreak für die Plattform enthält.

Soweit, so gut.

Ich hatte bisher immer Multiline-Strings mit CrLf als generellen Marker definiert, zum Definieren von Variablen, zum Speichern, für Felder in DB.

Das wurde auch immer gut verarbeitet, und bei der Anzeige richtig dargestellt.

In neueren Versionen gibt es da aber Fehler bei der Zeilendarstellung,
also CrLf wird als zwei Zeilen interpretiert.
Das wäre auch verständlich, weil beide Zeichen ja im Prinzip eine neue Zeile einleiten können.

Jetzt frage ich mich wie man am Besten damit umgehen soll.

Ich tendiere das so zu handhaben, wie bisher.
# Im Speicher, File, DB, Netzwerk wird mit dem generischen CrLf gespeichert.
# Bei der Anzeige werden die generischen CrLf in das jeweilige sLineBreak just-in-time konvertiert.

Das hat den Vorteil das ich Daten generell auf allen Platformen gleich halte.
Es gibt aber den Nachteil das ich bei jedem Anzeigen das generische CrLf ersetzen muss (ausser bei Windows).

Das Ersetzen z.B. so:
    LTxt := StringReplace( LTxt, CrLf, sLineBreak, [TReplaceFlags.rfReplaceAll]);
Ich frage mich ob es da vielleicht bessere Methoden gibt um das CrLf zu berücksichtigen.

Man könnte z.B. das just-in-time Konvertieren nur einmal durchführen, ö.ä.,
aber ich fürchte der Verwaltungsaufwand und Fehlermöglichkeiten dafür werden viel höher.

Es wäre auch denkbar einen speziellen "MultiLine String" Typ dafür anzulegen,
auch das hätte gewisse Vor- und Nachteile.

Wie könnte man das Ganze optimieren ?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz