AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

#13#10 oder doch #10#13

Ein Thema von fkerber · begonnen am 24. Jul 2005 · letzter Beitrag vom 27. Jul 2005
Antwort Antwort
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

#13#10 oder doch #10#13

  Alt 24. Jul 2005, 12:39
Hi!

Ich habe eine Frage an euch:
Normalerweise ist der "Befehl" für eine neue Zeile doch #13#10 also die "Chars" 13 und 10 in ebendieser Reihenfolge...

Jetzt habe ich hier ein Gerät, dass mir über ComPort Ausgaben schickt. Dort kommen die Zeilenumbrüche, aber als #10#13, was z.B. von einem Memo nicht richtig interpretiert wird.

Daher folgende Frage:
*) Was ist jetzt eigentlich richtig?


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: #13#10 oder doch #10#13

  Alt 24. Jul 2005, 12:46
"Richtig" ist alles oder nicht, je nach Sichtweise. Dein Text wird zunächst mal als Datenblock gesehen, meinetwegen noch als Aneinandereihung von (ASCII)-Zeichen. Zeilen existieren dagegen nur in unserer Vorstellung und werden durch Steuerzeichen dargestellt. Doch das geschieht nicht einheitlich, während unter Windows die Kombination eines Carriage Return und eines Line Feeds (in dieser Reihenfolge, also erst #13, dann #10), wird unter den meisten Unixen lediglich der Line Feed verwendet (#10), unter MacOS wird dagegene der Carriage Return verwendet (#13).

Wenn jetzt dein externes Gerät #10#13 verwendet, kann es dies ruhig tun, falsch ist es nicht, und solange es konsistent ist, ist es nicht wirklich ein Problem, da du ja ein StringReplace anwenden kannst.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#3

Re: #13#10 oder doch #10#13

  Alt 24. Jul 2005, 12:52
Hi!

Es ist leider nicht durchgängig so...

Solange das Gerät in seinem "Betriebsystem" ist, wird #10#13 geschickt, läuft meine Anwendung (in C geschrieben) ergibt printf mit \n ein #13#10

Ich bekomme vom ComPort die Zeichen ja einzeln, wie soll ich da ein Str-Replace machen?
Und wo kommt #10#13 her? Es ist ja lt. Konvention weder Linux, Unix, Mac, Windows oder sonst was...

Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#4

Re: #13#10 oder doch #10#13

  Alt 24. Jul 2005, 13:00
Sammel die Zeichen erst in einem Buffer, und nutze dann StrReplace(Buffer,'#10#13','#13#10'). Diese Reihenfolge kann übrigens überall herkommen, das ist ja reine Definitionssache. Frag am besten mal den Hersteller des Gerätes.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

Re: #13#10 oder doch #10#13

  Alt 24. Jul 2005, 13:02
Geschichte:

#13 = Wagen Rücklauf (Schreibmachine, Drucker) - Zurück auf das erste Spalte
#10 = Zeilen Vorschub (Schreibmachine, Drucker) - Nächste Zeile


"\n" ist doch bereits #13#10 in C oder ?


...So hab mein Beispiel weggemacht, wiedermal zu langsam.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: #13#10 oder doch #10#13

  Alt 24. Jul 2005, 13:12
Hi Frederic,

die Festlegung, dass CR und LF zusammen als Trenner von Textzeilen fungieren, ist historisch bedingt und deshalb für viele noch nachvollziehbar. Bei der mechanischen Schreibmaschine war die Reihenfolge übrigens von der Kraft abhängig, mit der man den Wagen zurückfuhr. Ich denke, du solltest beim zeichenweisen Empfang unter Windows bei jedem LF (#10) zuerst ein CR (#13) weitergeben und jedes eingehende CR einfach vernichten.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 30. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#7

Re: #13#10 oder doch #10#13

  Alt 27. Jul 2005, 20:09
Zitat von Phistev:
Sammel die Zeichen erst in einem Buffer, und nutze dann StrReplace(Buffer,'#10#13','#13#10'). Diese Reihenfolge kann übrigens überall herkommen, das ist ja reine Definitionssache. Frag am besten mal den Hersteller des Gerätes.
eher:
Buffer:=StringReplace(Buffer,#10#13,sLineBreak,[rfreplaceall]); die Konstante sLineBreak wird in der Unit System deklariert und beinhaltet unter Windows die Zeichenfolge #13#10 ...
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz