Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Event: Keypress anderer Datentype (https://www.delphipraxis.net/148310-event-keypress-anderer-datentype.html)

delphilolo 27. Feb 2010 11:46


Event: Keypress anderer Datentype
 
Hallo :hi: ,


ich wollte ein kleines Programm schreiben, wo, wenn ich ein a drück z.B. ein b kommt.
Das ganze habe ich so gemacht:

Code:
procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: char);
begin
 if key = 'a' then key := 'b';
so geht alles ich tippe ein a in das Memofeld und es kommt ein b.


Jetzt würde ich gerne das ganze erweitern, also so

Code:
procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: char);
begin
 if key = 'a' then key := 'yxc5';
Dann kommt aber der Fehler:
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
[Error] Unit1.pas(32): Incompatible types: 'Char' and 'String'

Gibt es da einen andern Type? Also ich nehme an das es an dem "char" liegt, weiß aber nicht was ich da sonst noch einsetzen könnte. :gruebel:

Grüße Paul

mkinzler 27. Feb 2010 12:07

Re: Event: Keypress anderer Datentype
 
Nein, weil ein Char nun mal ein Zeichen ist und keinen String!

fatalerror 27. Feb 2010 12:31

Re: Event: Keypress anderer Datentype
 
Alternative: Übergib einen Leerstring und setze den Text manuell

also etwa so:
Delphi-Quellcode:
if Key ='a' then
begin
    key:= #0;
    Memo1.SelText:= 'yxc5';
end;

delphilolo 27. Feb 2010 12:46

Re: Event: Keypress anderer Datentype
 
@fatal error Danke es hat geklappt.


Habe aber noch eine kleine Frage.
Wenn ich jetzt den Text schrieben habe wird er ja umgewandelt,

Wenn ich ihn jetzt in ein anderes Memo hineinfüge wird er aber nicht umgewandelt(also nur wenn ich ihn hier mit Hand reintippe),
also ich weiß nicht mit was für einem Event ich das weider zurück wandle.

Ich müsste ja den Quelltext dann eig. nur umdrehen also


Delphi-Quellcode:
if Key ='b' then
begin
    key:= #0;
    Memo1.SelText:= 'a';
end;

oder stimmt das nicht?

Wäre super wenn ihr mir eine kleine Hilfe geben könntet :)

Lg Paul

fatalerror 27. Feb 2010 13:00

Re: Event: Keypress anderer Datentype
 
Vielleicht wäre sinnvoll wenn du uns erklären würdest was dein Programm eigentlich bezweckt. Ich verstehe nicht genau was du eigentlich im Sinn hast, eine simple Textverschlüsselung?

Nun zu deinem Problem der Umwandlung:
schau dir mal die Funktion StringReplace an!
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   Memo1.Text:= StringReplace(Memo1.Text,'yxc5','a',[rfReplaceAll]);
end;

mkinzler 27. Feb 2010 13:04

Re: Event: Keypress anderer Datentype
 
Das Problem scheint zu sein, dass er das selber nicht richtig weiss.
Und von einem Event, der auf die Tasteneingabe reagiert zu verlangen, auf Paste-Vorgänge o.ä. zu reagieren ist auch etwas zu viel verlangt.

BTW. Sender der unbekannte Parameter: man sollte versuchen, nicht auf bestimmte Objekte zuzugreifen (Memo1)

delphilolo 27. Feb 2010 16:30

Re: Event: Keypress anderer Datentype
 
JA eine Simple Textverschlüsselung, ich bin noch ein Anfänger deshalb habe ich hier ja gefragt.

Astat 27. Feb 2010 16:58

Re: Event: Keypress anderer Datentype
 
Zitat:

Zitat von delphilolo
JA eine Simple Textverschlüsselung, ich bin noch ein Anfänger deshalb habe ich hier ja gefragt.

Hallo delphilolo,

Delphi-Quellcode:

procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: Char);
begin
  key := Chr(Ord(key) xor 10);
end;

//-- EDIT Sample für Encryption und Decryption
procedure TForm1.Memo2KeyPress(Sender: TObject; var Key: Char);
begin
  //-- Encrypt -- Key = 10
  key := Chr(Ord(key) xor 10);

  //-- Decrypt -- Key = 10
  key := Chr(Ord(key) xor 10);
end;
lg. Astat


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