Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Buchstaben konvertieren (https://www.delphipraxis.net/94153-buchstaben-konvertieren.html)

Tommy1988 17. Jun 2007 09:41


Buchstaben konvertieren
 
Ich habe diesen Code hier:

Delphi-Quellcode:
const
// #1
  abc  : Array[1..26] of String =
  ('a','b','c','d','e','f','g','h','i','j',
   'k','l','m','n','o','p','q','r','s','t',
   'u','v','w','x','y','z');

// #2
  char1  : Array[1..26, 1..2] of Char =
(('A','4'),('B','B'),('C','('),('D','Ð'),
 ('E','3'),('F','ƒ'),('G','g'),('H','h'),
 ('I','1'),('J','j'),('K','{'),('L','£'),
 ('M','m'),('N','n'),('O','0'),('P','p'),
 ('Q','q'),('R','r'),('S','$'),('T','7'),
 ('U','µ'),('V','v'),('W','w'),('X','×'),
 ('Y','¥'),('Z','2'));
Und hiermit wird der Text der in einem Memo steht, konvertiert und in ein RichEdit verfrachtet:
Delphi-Quellcode:
procedure TForm1.JvXPButton1Click(Sender: TObject);
var Text: string;
    i  : Integer;
begin
  Text := LowerCase(Memo1.Text);
  for i := 1 to 26 do begin
    while Pos(abc[i], Text) <> 0 do begin
      Text[Pos(abc[i], Text)] := char1[i,Random(2)+1];
    end;
  end;
  RichEdit1.Text := Text;
end;
Jetzt meine Frage: wenn ich #2 (s.o.) ändere in:
Delphi-Quellcode:
('a','b','c','Ð','e','f','g','h','i','j',
   'k','l','m','n','o','p','q','r','s','t',
   'u','v','w','x','y','z')
Dann bekomme ich in dieser Reihe Fehler:
Delphi-Quellcode:
Text[Pos(abc[i], Text)] := char1[i,Random(2)+1];
Wie kann ich eine EINFACHE Konvertierungsmethode schreiben?

Beispiel:
Delphi-Quellcode:
// #1
  abc  : Array[1..26] of String =
  ('a','b','c','d','e','f','g','h','i','j',
   'k','l','m','n','o','p','q','r','s','t',
   'u','v','w','x','y','z');
Und das kovertierte ungefähr so:
Delphi-Quellcode:
// #1
  abc  : Array[1..26] of String =
  ('1','2','3','4','5','6','7','8','9','10',
   '11','12','13','14','15','16','17','18','19','20',
   '21','22','23','24','25','26');

Matze 17. Jun 2007 09:49

Re: Buchstaben konvertieren
 
Hi,

schau dir mal Delphi-Referenz durchsuchenOrd an. Davon dann 64 (glaube ich) subtrahieren und du hast deine erste Konvertierung realisiert.

Nikolas 17. Jun 2007 09:55

Re: Buchstaben konvertieren
 
Und wenn du später auch noch wissen willst, was diese Konstante bedeutet, kannst du auch
Delphi-Quellcode:
ord(DeinBuchstabe)-Ord('a')
schreiben. (Oder wars doch ein großes a?)

// Und wenn du 'Buchstaben konvertieren' mal in die Suche eingegeben hättest, hättest du den Befehl auch ohne einen neuen Thread gefunden...

Tommy1988 18. Jun 2007 15:28

Re: Buchstaben konvertieren
 
Zitat:

// Und wenn du 'Buchstaben konvertieren' mal in die Suche eingegeben hättest, hättest du den Befehl auch ohne einen neuen Thread gefunden...
Hab ich gemacht, grade wieder, NIX gefunden

Tommy1988 18. Jun 2007 16:27

Re: Buchstaben konvertieren
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Text: string;
    i  : Integer;
begin
  Text := LowerCase(Memo1.Text);
  for i := 1 to 26 do begin
    while Pos(alpha[i], Text) <> 0 do begin
Text[Pos(alpha[i], Text)] := haxxor[i]; // Inkomptbl. Typen Char und WideChar
    end;
  end;
  RichEdit1.Text := Text;
end;

Wie und was muss ich in dieser Reihe oder in dem Block ändern, damit es WideChar kompatibel ist?

Apollonius 18. Jun 2007 16:32

Re: Buchstaben konvertieren
 
Definiere Text als WideString.

Tommy1988 18. Jun 2007 16:35

Re: Buchstaben konvertieren
 
Mhh.. mit dem Code oben, möchte ich aus einem K ein κ (kappa) machen.

Leider bekomme ich ins RichEdit nur ein "?"

Apollonius 18. Jun 2007 16:57

Re: Buchstaben konvertieren
 
grmpf. Die VCl stellt leider nur Ansistrings dar, sodass du nicht ohne weiteres mit Unicode arbeiten kannst. Probier mal die Eigenschaft Charset von TFont.

Matze 18. Jun 2007 17:33

Re: Buchstaben konvertieren
 
Meines Wissens kann man im RichEdit verschiedene Schriftarten nutzen. In Symbol müsste das griechische Alphabet enthalten sein.

Ansonsten nutze Unicode-fähige Komponenten. Das Thema hatten wir aber schon zig mal hier. Aber das gehört nicht mehr zum Ausgangsthema, in dem es sich lediglich um ein Programmierproblem handelte.


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