Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Delphi Escape Sequenzen (https://www.delphipraxis.net/194354-delphi-escape-sequenzen.html)

A.Griffin 10. Nov 2017 15:43

Delphi Escape Sequenzen
 
Hallo zusammen,


wie schreibe ich Escape Sequenzen in einen String? In meinem konkreten Fall muss ich einen String erstellen der die Escape Sequenze "ESC-L" enthält. Ich brauche das um über Netzwerk mit einem KBS Pick-by-light System zu kommunizieren.

Der schöne Günther 10. Nov 2017 16:11

AW: Delphi Escape Sequenzen
 
ESC ist 0x33.
Siehe z.B. http://www.asciitable.com/

Delphi-Quellcode:
meinString := #33 + 'L' + einAndererString;

timog 10. Nov 2017 16:16

AW: Delphi Escape Sequenzen
 
Schon mal mit #27+'L' probiert? (ESC sollte 27 in ASCII sein).

Oder vielleicht so tun, als sei es ein Drucker und dann mit der Windows Escape oder ExtEscape arbeiten? http://www.delphipraxis.net/23387-da...er-senden.html

himitsu 10. Nov 2017 19:46

AW: Delphi Escape Sequenzen
 
MSDN-Library durchsuchenVK_ESCAPE

Zwischen zwei StringKonstanten kann man das + weglassen.
(bei zwei kollidierenden ' müssen sie dann entfallen)

Delphi-Quellcode:
#27'L'
#27 + 'L' // Dezimal
#$1B + 'L' // Hexadezimal
Char(VK_ESCAPE) + 'L' // Konstante

Und natürlich als String den AnsiString verwenden und nicht den "String".
Ab Delphi 2009 ist der String ein UnicodeString und es gibt Spaß mit Konvertierungen der Chars. (CodePage)
Natülich kann man auch besser gleich den Delphi-Referenz durchsuchenRawByteString (ab 2009) oder vielleicht besser ein TBytes verwenden, wenn es um Steuersequenzen und nicht um "Texte" geht.

p80286 10. Nov 2017 21:32

AW: Delphi Escape Sequenzen
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1385954)
ESC ist 0x33.

Steinigt ihn! er hat C gedacht!

Gruß
K-H

Redeemer 11. Nov 2017 09:31

AW: Delphi Escape Sequenzen
 
Zitat:

Zitat von p80286 (Beitrag 1385992)
Zitat:

Zitat von Der schöne Günther (Beitrag 1385954)
ESC ist 0x33.

Steinigt ihn! er hat C gedacht!

Gruß
K-H

Nicht mal gedacht. Ich glaube, er hat einfach Oct übersehen und dachte, es wäre Dec. #27 oder Char($1B) sind richtig. 033 ist Achtersystem, das kann Delphi nicht.

himitsu 11. Nov 2017 14:17

AW: Delphi Escape Sequenzen
 
Binär kann es auch nicht :cry:

A.Griffin 13. Nov 2017 08:07

AW: Delphi Escape Sequenzen
 
Ich nutze für das Project XE7. Ich habe #27 + 'L' schon probiert aber nur mit "string", hätte gedacht, dass writeln das richtig konvertiert. Ich probiere es später mit Ansistring.

*edit*

Wenn ich IOHandler.WriteLn(MeinString, IndyTextEncodingASCII) nutze, wird es dann richtg konvertiert, wenn ich "String" nutze?

*edit2*

OK so wie es in meinem *edit* steht geht es jetzt. Hatte gar nicht gedacht, dass das Encoding nicht richtig ist.

Redeemer 13. Nov 2017 10:58

AW: Delphi Escape Sequenzen
 
Indy macht leider viel Unsinn mit Zeichen oberhalb von 127. Daher ist IndyTextEncodingASCII zu vermeiden. Grundsätzlich bietet es sich an, die Sachen mit AnsiString oder RawByteString zu machen, aber da WriteLn ja für Text ist, ist der genaue Typ hier egal. Delphi wandelt das um.

Man könnte auch einen DeinString: RawByteString nehmen, um Absatzzeichen ergänzen und diesen dann mit
Delphi-Quellcode:
IOHandler.Write(TBytes(DeinString))
oder
Delphi-Quellcode:
IOHandler.WriteBuffer(DeinString[1], Length(DeinString))
senden.

himitsu 13. Nov 2017 11:33

AW: Delphi Escape Sequenzen
 
Zitat:

Zitat von Redeemer (Beitrag 1386108)
Indy macht leider viel Unsinn mit Zeichen oberhalb von 127.

Darum der letzte Absatz in meinem ersten Post.

String:
Der Compiler konvertiert eventuell die CodePage (QuellCode > Unicode in Binary)
und dann zur Laufzeit nochmal, abhängig von den Einstellungen des aktuellen Systems (Unicode > ANSI des Windows/Users).


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.
Seite 1 von 2  1 2      

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