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
 
Benutzerbild von himitsu
himitsu

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

AW: wie interpretiert Windows Steuerzeichen?

  Alt 9. Aug 2016, 11: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.
Ein Therapeut entspricht 1024 Gigapeut.

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


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 17:22 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