AGB  ·  Datenschutz  ·  Impressum  







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

TRichEdit Sonderzeichen ein-/ausblenden

Ein Thema von rokli · begonnen am 18. Mai 2010 · letzter Beitrag vom 24. Jul 2012
Antwort Antwort
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#1

TRichEdit Sonderzeichen ein-/ausblenden

  Alt 18. Mai 2010, 07:35
Moin Zusammen.

Ich möchte gerne in einem TRichEdit die "nicht druckbaren Sonderzeichen" (so heisst es wohl in Word) ein- bzw. ausblenden. Also alle Leezeichen im Text sollen als "Punkt" dargestellt werden, TABs als ">" und CR als "CHAR(182)". Das kann im Prinzip so ziemlich jedes Tool (TextPad, NotePad++ usw.).

Der Text wird in diesem Falle nicht manuell erfasst, sondern es geht um das Anzeigen einer ASCII Schnittstellendatei, die bereits vorliegt und einfach nur in die TRichEdit eingelesen wird.

Als möglichen Lösungsansatz sehe ich: Den Text von oben nach unten durchlesen und die Spezialzeichen durch "anzeigbare" Zeichen zu ersetzen. Und beim ausblenden dan umgekehrt.

Beispiel: Dieses ist ein Satz.
Dieses░ist░ein░Satz.

Ist mein Lösungsweg der richtige oder gibt es einen eleganteren Weg, diese Zeichen im TRichEdit sichtbar zu machen?

Vielen Dank für Eure Hilfe - und einen schönen Tag noch!

Gruß
Rolf
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 18. Mai 2010, 08:41
Soll der Text editiert werden können?

Wenn nicht, dann kannst du (da du ja ein unicodefähiges Delphi nutzt) diese Zeichen auch "übersetzen".
Bei ASCII sind das ja nur etwa 34 Zeichen.

Im Unicodezeichenraum gibt es auch andere sichtbare Zeichen, welche die Symbole der gewünschten Steuerzeichen darstellen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 18. Mai 2010, 09:23
Hi himitsu,

nein, der Text wird nicht editiert, ich möchte ja eingetlich nur, dass die Zeichen angezeigt werden.

Hintergrund: Ich lese eine ASCII Datei ein, die eine Schnittstelle darstellt. Also muss beim Aufbau der Datei gewährleistet werden, dass die Definition eingehalten wird: Feld1 ist 5 Zeichen lang, Feld2 ist 19 Zeichen lang, Feld3 ist 1 Zeichen lang .. usw. Da die gesammte Definition aus 285 Feldern besteht (der Satz ist 1687 Zeichen lang), soll dieses Programm den Inhalt einfach nur zeilenweise anzeigen. Da per Vereinbarung Leerstellen als ' ' (Space) in die Datei geschreiben werden, kann man diese nur schlecht sehen ... und darum gehts im Prinzip.

Ich hoffe, dass das zur Erklärung beiträgt.
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 18. Mai 2010, 10:06
Schade: In meinem XP gibt es nur die Schriftart "Lucida Sans Unicode", welche diese Zeichen schon kennt,
aber in XP dürften viele Schriftarten auch nur UCS 4.x oder gar 3.x kennen,
wärend diese Zeichen erst in UCS 5.2 (Unicode Standard) eingeführt wurden.

[edit] in Windows 7 sind auch nur "Lucida Sans Unicode" und "Segoe UI Symbol" auf den Stand von UCS 5.2 und enthalten auch noch den entsprechenden Zeichenbereich.

Laut der Tabelle http://www.unicode.org/charts/PDF/U2400.pdf wäre es also:
Delphi-Quellcode:
Function TextToView(Const S: AnsiString): String;
  Var i: Integer;

  Begin
    Result := S;
    For i := Length(Result) downto 1 do
      Case Result[i] of
        #0..#31: Result[i] := Char(Ord(Result[i]) or $2400);
        ' ': Result[i] := #$00B7; {oder #$2420}
        127: Result[i] := #$2421;
      End;
  End;
Funktionieren tut es so schonmal
Delphi-Quellcode:
Function TextToView(Const S: AnsiString): String;
  Var i: Integer;

  Begin
    Result := S;
    For i := Length(Result) downto 1 do
      Case Word(Result[i]) of
        0..31: Result[i] := Char(Word(Result[i]) or $2400);
        Ord(' '): Result[i] := Char($00B7); {oder #$2420}
        127: Result[i] := Char($2421);
      End;
  End;

Function ViewToText(S: String): AnsiString;
  Var i: Integer;

  Begin
    For i := Length(S) downto 1 do
      Case Word(Result[i]) of
        $2400..$241F: S[i] := Char(Word(S[i]) and $00FF);
        $00B7: S[i] := ' ';
        $2421: S[i] := Char(127);
      End;
    Result := S;
  End;
Also entweder schauen, daß du eine passende Schriftart findest, welche diese Zeichen darstellen kann
oder du suchst dir ein paar andere Zeichen aus (Vorteil, du mußt dich um die Darstellung nicht kümmern)
oder du fügst Bilder in den Text ein, bzw. zeichnest den Text selber und malst dann was Passendes für die entsprechenden Zeichen hin.


[add]
Zitat:
Leezeichen im Text sollen als "Punkt" dargestellt werden, TABs als ">" und CR als "CHAR(182)"
als Minimal-Version würde dieses deiner Definition entsprechen:
Delphi-Quellcode:
Function TextToView(Const S: AnsiString): String;
  Var i: Integer;

  Begin
    Result := S;
    For i := Length(Result) downto 1 do
      Case Result[i] of
        #09: Result[i] := '>'; // oder besser #$00BB (») ?
        #10: Result[i] := #$00B6;
        ' ': Result[i] := #$00B7;
      End;
  End;
Diese Zeichen dürften sogar auch direkt möglich sein:
Delphi-Quellcode:
* #09: Result[i] := '»';
        #10: Result[i] := '';
        ' ': Result[i] := '·';
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 18. Mai 2010, 16:01
In der Anlage mal ein Bild mit und ein Bild ohne Sonderzeichen - schon klasse! Dann wird schon deutlich, dass mit eingeblendeten Sonderzeichen die Prüfung auf Stellengenauigkeit einfacher ist!

Vielen Dank noch mal
Rolf
Miniaturansicht angehängter Grafiken
sozeian_126.jpg   sozeiaus_404.jpg  
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 20. Jul 2012, 10:33
Hallo,

ich habe ein ähnliches Problem wie bereits in diesem Thread beschrieben.
Auch ich möchte Sonderzeichen (Leerzeichen, Zeilenschaltung sowie Absatzmarke) in einer TRichEdit-Komponente wie in Word sichtbar machen.

Derzeit ersetze ich auch die Leerzeichen manuell mit deinem ASCII 183 (Punkt auf mittlerer Zeilenhöhe). Das Problem was dabei auftritt ist, daß es mir den Zeilenumbruch durcheinander bringt, da anscheinend dieser Punkt mehr Platz als das eigentliche Leerzeichen einnimmt.

Mir gehen diesbezüglich langsam die Ideen aus. Hat hier evtl. noch jemand einen Lösungsansatz?

Zum Programm:
Dieses dient zum Ablegen von Tastschreibprüfungen, wo Prüflinge eine Vorlage zeilengleich oder auch im Fließtext abtippen müssen. Dieser Text soll natürlich am Bildschirm genauso aussehen wie auf der Vorlage bzw. einem anschl. Ausdruck. Die Zeilenbreite synchronisiere ich darüber, daß ich das TRichEdit-Feld auf 21 cm breite einstelle. Nicht schön, aber funktioniert. Bis auf den Umstand, wenn ich die Leerzeichen anzeigen will. Zeilen- und Absatzschaltung würde ich auch gern anzeigen, hab ich aber noch nicht drin, da mir die Leerzeichen noch Probleme bereiten.

Ich würde mir über Ideen hier freuen. Vielen Dank im Voraus.

Achso, ich nutze derzeit Delphi 7.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 20. Jul 2012, 11:17
Zum einen kannst Du über die Fontauswahl eine Steuerung vornehmen, zum anderen schaust Du einmal in die TTF-Doku (hier) da kannst du für jedes Zeichen erfahren mit welchen Maßen es zur Anzeige/Papier gebracht wird.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 20. Jul 2012, 11:23
Hallo,

muss es unbedingt TRichEdit sein?

Wenn nein, dann schau Dir bitte mal http://sourceforge.net/projects/synedit/ an, das ist eine Editorkomponente mit Syntaxhervorhebung und die Anzeige von Leerzeichen... kann man mit dem Setzen eines einzigen Attributes veranlassen.
  Mit Zitat antworten Zitat
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#9

AW: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 23. Jul 2012, 15:37
Hallo,
ich wollte mich erstmal für eure Antworten bedanken.

Und nein, es muss nicht TRichEdit sein.

Vorgabe für das Programm ist, MS-Word unabhängig. Man soll in dem Textfeld einen Text eingeben in einer bestimmten Zeit eingeben. Anschläge und Rechschreibung sind relevant auch, wenn keine Autokorrektur gewünscht ist, denn dies Programm soll einfach für Tastschreibübungen/Prüfungen (Blind schreiben) genutzt werden.
Manipulation mit STRG-C /-V usw. fange ich schon ab.

Ich versuche derzeit die SynEdit-kompnente einzubauen. Hoffe es funktioniert.

Gruß
Micha
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#10

AW: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 24. Jul 2012, 14:09
So, hab die Synedit-Komponente jetzt eingebaut.
Gleich auch mit SysEditPrint.

Sieht soweit alle sehr gut aus. Gefällt mir auch gut die Komponente.

Aber noch ne Frage:
Kann man die Steuerzeichen auch mit ausdrucken?
Also ich kann die in der Anzeige super an und ausschalten.
Zeigt sogar das Absatzzeichen an. Leider unterscheidet es nicht nicht von der einfachen Zeilenschaltung (SHIFT + ENTER). Aber das ist erstmal okay, hoffe ich.

Allerdings druckt er die Steuerzeichen nicht mit aus, obwohl ich die an hatte.
Geht das auch?

Achso, noch was, wie ist denn die 80 bei RightEdge zu interpretieren.
Was für ein Wert ist das? Pixel sind's nicht und Zentimeter auch nicht.

Nochmals herzlichen Dank.
Hätte ich die Komponente nur schon früher gekannt, hätte vieles erleichtert.
Bislang war mir SynEdit nur als kompletter Editor nicht als Komponente bekannt.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!

Geändert von MPirnstill (24. Jul 2012 um 14:57 Uhr)
  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 07:50 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