AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch wie interpretiert Windows Steuerzeichen?
Thema durchsuchen
Ansicht
Themen-Optionen

wie interpretiert Windows Steuerzeichen?

Ein Thema von p80286 · begonnen am 8. Aug 2016 · letzter Beitrag vom 11. Aug 2016
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

wie interpretiert Windows Steuerzeichen?

  Alt 8. Aug 2016, 14:20
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.067 Beiträge
 
Delphi 12 Athens
 
#2

AW: wie interpretiert Windows Steuerzeichen?

  Alt 8. Aug 2016, 14:56
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Aug 2016 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: wie interpretiert Windows Steuerzeichen?

  Alt 8. Aug 2016, 18:56
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.067 Beiträge
 
Delphi 12 Athens
 
#4

AW: wie interpretiert Windows Steuerzeichen?

  Alt 9. Aug 2016, 12:12
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Aug 2016 um 12:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: wie interpretiert Windows Steuerzeichen?

  Alt 11. Aug 2016, 12:06
Steuerzeichen steuern das Verhalten des Verarbeiters und wie oder was der behandelt, ist ihm überlassen.
Das war's vielen Dank!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 00:46 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