Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Plattformunabhänger Line-Break (https://www.delphipraxis.net/193902-plattformunabhaenger-line-break.html)

Codehunter 21. Sep 2017 09:38

Plattformunabhänger Line-Break
 
Moin,

ich meine mich zu erinnern, dass es in neueren Delphis vordefinierte Konstanten oder eine Function gab, welche das korrekte Line-Break je nach Compiler-Target lieferten. Also
Delphi-Quellcode:
#13#10
für Windows,
Delphi-Quellcode:
#10
für Linux und
Delphi-Quellcode:
#13
für MacOS. Zumindest meine ich, dass die korrekten Line-Breaks so sein müssten. Allerdings komme ich gerade nicht darauf, wie die entsprechende Konstante bzw. Function hieß.

Grüße
Cody

Klaus01 21. Sep 2017 09:40

AW: Plattformunabhänger Line-Break
 
Delphi-Quellcode:
sLineBreak
vielleicht?

Grüße
Klaus

Glados 21. Sep 2017 09:40

AW: Plattformunabhänger Line-Break
 
sLineBreak :thumb:

Codehunter 21. Sep 2017 09:47

AW: Plattformunabhänger Line-Break
 
Ah danke!

Redeemer 21. Sep 2017 09:57

AW: Plattformunabhänger Line-Break
 
macOS benutzt seit langem nicht mehr
Delphi-Quellcode:
#13
sondern jetzt das von Linux.

Codehunter 21. Sep 2017 15:05

AW: Plattformunabhänger Line-Break
 
Zitat:

Zitat von Redeemer (Beitrag 1381760)
macOS benutzt seit langem nicht mehr
Delphi-Quellcode:
#13
sondern jetzt das von Linux.

Ja das hab ich mir dann auch so gedacht nachdem ich die Implementierung von sLineBreak angeschaut habe. Mein Bauchgefühl sagt, dass #13 nur bis MacOS 9.x verwendet wurde und ab OSX dann #10 - evtl. weil OSX ein BSD-Ableger ist?

Von der Sache her finde ich aber die Windows-Variante ist die einzig richtige. Denn umgemünzt auf den ursprünglichen (IBM-?) Standard zur Steuerung von Nadel- oder Typenraddruckern war $0D bzw. #13 das Carriage Return (CR, Wagenrücklauf) und $0A bzw. #10 das Line Feed (LF, Zeilenvorschub). Erst beides zusammen, egal in welcher Reihenfolge, ergab einen korrekten Zeilenumbruch in dem Sinne wie wir ihn heute kennen.

freimatz 21. Sep 2017 17:15

AW: Plattformunabhänger Line-Break
 
Awa - das einzig richtige und ursprüngliche ist der Wagenrücklauf. Der machte bei meiner mechanischen Schreibmaschine mit einem Kommando dass es bei der nächste Zeile vorne weiter ging. :-D
Nadeldrucker und ursprünglich? - pah

Uwe Raabe 21. Sep 2017 17:35

AW: Plattformunabhänger Line-Break
 
Das ist nur bedingt richtig: Der Hebel für den "Wagenrücklauf" (CR, aber faktisch war das kein Rücklauf, denn man musste den Wagen von Hand zurückschieben - übrigens konnte man mit dem nötigen Geschick auch den einen oder anderen Tab damit einsparen, wenn man eben nicht bis zum Anfang zurück schob) - nun dieser Hebel hat auch ein Zahnrad angetrieben, daß die Walze um eine Zeile vorgedreht hat (=LF). Für Leerzeilen wurde der Hebel nämlich auch betätigt, obwohl der Wagen schon am Anfang der Zeile stand. Genauso konnte man den Wagen ohne diesen Hebel zurückschieben, womit man eben diesen Zeilenvorschub vermied. Insofern ist CR/LF schon die richtige Metapher, wobei man hier auch je nach Sichtweise ein LF/CR hineininterpretieren kann.

Codehunter 22. Sep 2017 07:14

AW: Plattformunabhänger Line-Break
 
Mir wäre neu dass Nadeldrucker einen Rücklauf-Hebel hatten. Schreibmaschinen sind IMHO eine andere Baustelle ^^ Ich war zwar ein bisschen verkehrt mit IBM, eigentlich geht das auf ESC/P von Epson zurück.

Jedenfalls ist der Zeilenvorschub $0A bzw. #10 per Standard nicht vorgesehen gewesen, den Wagen zurück laufen zu lassen. Vielmehr war es ausdrücklich gewollt, den Wagen stehen und ggf. um ein Character zurück fahren zu lassen, um schnell vertikalen Text drucken zu können.

Aber seis drum, #13#10 ist nun mal unter Windows der Zeilenumbruch. Punkt aus Feierabend ^^

Sherlock 22. Sep 2017 08:55

AW: Plattformunabhänger Line-Break
 
Ihr seid ja richtige Paläoinformatiker :D

Sherlock

Jumpy 22. Sep 2017 08:56

AW: Plattformunabhänger Line-Break
 
Zitat:

Zitat von Sherlock (Beitrag 1381816)
Ihr seid ja richtige Paläoinformatiker :D

Ich hab auch schon überlegt ob ich Angst haben muss, dass die gesamt DP in 5 Jahren kollektiv in Rente geht :-D

nahpets 22. Sep 2017 09:24

AW: Plattformunabhänger Line-Break
 
Wenn ich mich recht erinnere, war es bei älteren Schreibmaschinen so, dass man mit dem Hebel zuerst an den Zeilenanfang ging, also Wagenrücklauf.

Erst wenn man am linken Rand war und weiterhin Druck auf den Hebel ausübte, führte dieser Druck dazu, dass man den Hebel noch etwas weiter bewegte und dadurch eine Mechanik auslöste, die für den Zeilenvorschub sorgte.

Im Hebel waren also zwei Funktionen vereint.

Man konnte damit durchaus nur einen Wagenrücklauf ausführen, ohne das zwingend ein Zeilenvorschub stattfand.

Ob nur ein Wagenrücklauf oder eine Wagenrücklauf mit anschließendem Zeilenvorschub stattfand, war also durchaus eine Frage der Art der "Hebelbetätigung".

Siehe auch Beschreibungen bei Wikipedia: Wagenrücklauf und Zeilenumbruch

Der Zeilenvorschub sorgt dafür, dass in die nächste Zeile gewechselt wird, die Position des Schreibkopfes bleibt unverändert. Der Wagenrücklauf bringt den Schreibkopf an den Anfang der Zeile, ohne die Zeile zu wechseln.

#13#10 kombiniert diese beiden Schritte, also zuerst der Wagenrücklauf und dann der Zeilenvorschub.

Unter Windows ist #13#10 eben dieses beides und kann auch einzeln genutzt werden (sofern sich das Ausgabegerät auch entsprechend verhalten kann und nicht #10 alleine als die Zeichenkombination #13#10 uminterpretiert.)

Für beide Schritte nur #10 zu verwenden ist eigentlich nicht korrekt ;-)
Zitat:

Zitat von Jumpy (Beitrag 1381817)
Zitat:

Zitat von Sherlock (Beitrag 1381816)
Ihr seid ja richtige Paläoinformatiker :D

Ich hab auch schon überlegt ob ich Angst haben muss, dass die gesamt DP in 5 Jahren kollektiv in Rente geht :-D

Wie kommst Du dadrauf? Eventuell ist sie es doch schon ;-)

Codehunter 22. Sep 2017 11:09

AW: Plattformunabhänger Line-Break
 
Zitat:

Zitat von Jumpy (Beitrag 1381817)
Zitat:

Zitat von Sherlock (Beitrag 1381816)
Ihr seid ja richtige Paläoinformatiker :D

Ich hab auch schon überlegt ob ich Angst haben muss, dass die gesamt DP in 5 Jahren kollektiv in Rente geht :-D

Ha, schön wärs ^^ Ich hab noch zwei Dekaden bis zur Rente (wenn bis dahin das Eintrittsalter nicht auf 130 Jahre angehoben wurde)

Was ich z.T. viel schlimmer finde ist, dass viele jüngere Entwickler den "Urschleim" nicht mehr kennen. Zum Beispiel dass es in Menüleisten eine bestimmte Reihenfolge gibt die sich etabliert hat (Datei, Bearbeiten ... Hilfe) von links nach rechts. Dieser Standard nannte sich glaube ich SAA-kompatible Menüs. Dazu fällt dem Gockel kaum noch was ein, so lang ist das schon her ^^

Man kann bzw. sollte solches "paläoinformatisches" Wissen aber auch nicht einfach als Nostalgie abtun. Gerade wenn solche Standards wie ESC/P teilweise immer noch die Grundlage für vieles bilden. Was dabei raus kommt wenn man solche Dinge ignoriert sieht man ja beim Ribbon-Office :twisted:

Sherlock 22. Sep 2017 11:46

AW: Plattformunabhänger Line-Break
 
Ich hab nix dagegen gesagt, bei mir sind es noch 15 Jahre bis zur Rente. Ich find es im Gegenteil sogar gut und erfrischend. Immerhin könnte ich mal mitreden, wenn nicht alles schon gesagt wäre - im Gegensatz zu manch "neumodischem Kram" ;).

Sherlock

himitsu 24. Sep 2017 09:31

AW: Plattformunabhänger Line-Break
 
Wer sich ärgern lassen will ... das blöde TRichEdit (die API-Version, welche aktuell in Delphi verwendet wird ... war vor mehreren Jahren mal anders) nutzt och #13 als Zeilenumbruch, aber die VCL macht da "teilweise" ein #13#10 draus ... aber leider nicht bei der Positionsberechnung für SelStart und SelLength, obwohl es da seit vielen Jahren eine Fehlermeldung mit Lösungsvorschlagen im QC gab :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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