Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: TRichEdit Sonderzeichen ein-/ausblenden

  Alt 18. Mai 2010, 11: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] := '·';
$2B or not $2B
  Mit Zitat antworten Zitat