Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   wie interpretiert Windows Steuerzeichen? (https://www.delphipraxis.net/189921-wie-interpretiert-windows-steuerzeichen.html)

p80286 8. Aug 2016 13:20

wie interpretiert Windows Steuerzeichen?
 
Hallo zusammen,
Wir waren uns im Kollegenkreis nicht so ganz einig, und MS hält sich da vornehm zurück.
Konkret geht es um x01, x09, x0A,x0D, x1C..x1F.
MS sagt, daß Textout bzw. TabbedTextout alle Zeichen so ausgeben, wie der benutze Font es vorsieht. Angeblich interpretiert Textout das Zeichen x09(TAB) nicht, aber was macht er daraus?
Ist das jedem Programm/Programmierer selbst überlassen, oder gibt es da Standards/Empfehlungen?

Gruß
K-H

himitsu 8. Aug 2016 13:56

AW: wie interpretiert Windows Steuerzeichen?
 
Ich vermute mal, daß die meisten Schriftarten an Position 9 ein "Leerzeichen" malen.
In Windows haben die Control-Codes (#0 bis #31) eigentlich keine sichtbare Darstellung.

Es kommt auch darauf an, was du willst.
Willst du sie "darstellen", dann gibt es im Unicode sichtbare "Ersatzzeichen" für verschiedene Control-Codes.
z.B. https://en.wikipedia.org/wiki/Unicod...ntrol_pictures

Genauso gibt es für Fehler bei Codierungs-Konvertierungen im Unicode ein Ersatzzeichen, aber viele Windows-APIs verwenden dort stattdessen das "?" , aber bei Nicht-Unicode-Codierungen ist es eh etwas praktischer, wenn da ein überall existierendes ASCII-Zeichen verwendet wird.
https://de.wikipedia.org/wiki/Ersetzungszeichen

p80286 8. Aug 2016 17:56

AW: wie interpretiert Windows Steuerzeichen?
 
Nee da hast Du mich mißverstanden.
Es geht darum wie diese Characters interpretiert werden.
z.B. x08 Backspace
gebe ich einen String, der ein Backspace enthält aus, so erwarte ich eigentlich, daß das Zeichen vor dem Backspace gelöscht wird. Könnte es sein daß diese Interpretation im Font verankert sein muß? z.B. bei den sog. Deadkeys wurden zwei Zeichen kombiniert indem nach dem ersten Zeichen kein Vorwärtsschritt erfolgte. Genauso könnte x08 auch einen Rückwärtsschritt auslösen?

Oder liegt die Interpretation der Steuerzeichen bei Windows oder dem Programmierer?

Gruß
K-H

himitsu 9. Aug 2016 11:12

AW: wie interpretiert Windows Steuerzeichen?
 
Steuerzeichen steuern das Verhalten des Verarbeiters und wie oder was der behandelt, ist ihm überlassen.

Beispiel: TEdit/TMemo/EDIT/MEMO
Im Single-Line-Mode behandeln die #10 und #13 als "Zeichen" (meißt unsichtbar mit der Breite 0, da das "Zeichen" in vielen Fonts so definiert ist)
Im Multi-Line-Mode werden die als Steuerzeichen interpretiert, aber manchmal z.B. nur #13#10 und nicht #10 oder #13, siehe der Windows-Editor.

Entsprechend reagiert DrawText unterschiedlich, je nach Optionen (DT_SINGLELINE DT_TABSTOP DT_PREFIXONLY DT_NOPREFIX DT_HIDEPREFIX DT_RTLREADING)
Bei PREFIXONLY und DT_HIDEPREFIX ist sogar das & ein Steuerzeichen.

TextOut
TabbedTextOut
PolyTextOut
DrawText
DrawTextEx
ExtDrawText

So ist "Backspace" auch nur ein Zeichen.
Das Zeichen ist und bleibt ein Zeichen, aber ein EDIT reagiert bei Tastatureingaben entsprechend darauf und löscht dann, anstatt die Eingabe als Zeichen in seinen Text einzufügen.
Keycodes und Chars darf man da nicht verwechseln, auch wenn die ordinalen Werte hierfür sich "zufällig" teilweise gleichen.
#13#10#9 werden bei der Anzeige im Edit/Memo dann entsprechend als "Steuerzeichen" ausgewertet und bei Eingabe von VK_RETURN wird auch nicht nur #13 ins EDIT/MEMO kopiert, sondern bei SingleLine-Mode gibt es nur ein BEEP und im MultiLine-Mode wird dafür die Sequenz für den Zeilenumbruch eingefügt, abhängig von Komponente/Betriebssystem/Einstellungen.
Delphi-Quellcode:
Edit1.Text := 'abc' + char(VK_BACK) + 'xyz';
ShowMessage(IntToStr(Length(Edit1.Text))); // ist 7, also "abc*xyz" und nicht "abxyz"
PS: Per Zuweisung Text:= und via Strg+V bekommt man ins TEdit auch ein "Tablulator"-Zeichen rein.
Standardmäßig ist das TEdit ja so eingestellt, daß es die Tastatueingabe des Tabulators für den Control-Wechsel verwenden soll.

p80286 11. Aug 2016 11:06

AW: wie interpretiert Windows Steuerzeichen?
 
Zitat:

Zitat von himitsu (Beitrag 1344477)
Steuerzeichen steuern das Verhalten des Verarbeiters und wie oder was der behandelt, ist ihm überlassen.

Das war's vielen Dank!

Gruß
K-H


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