Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi case Key of ... Großbuchstaben (https://www.delphipraxis.net/144462-case-key-grossbuchstaben.html)

Major1337 8. Dez 2009 12:31


case Key of ... Großbuchstaben
 
Hey,

gibt es eine Tabelle in der ich nachschauen kann welchen "Key" die Großbuchstaben von A-Z haben:
Hier mal 2 Beispiele (aber sind für Kleinbuchstaben)

87 = 'w';
90 = 'z';

Sharky 8. Dez 2009 12:33

Re: case Key of ... Großbuchstaben
 
Ist Key der Scancode der Taste oder der ASCII Code?

Wenn es der Scancode ist müsstest Du prüfen of die "Shift-Taste" gedrückt ist. Ansonsten ASCII-Tabelle.

DeddyH 8. Dez 2009 12:35

Re: case Key of ... Großbuchstaben
 
IIRC haben die Großbuchstaben einen um 32 kleineren ASCII-Code als die Kleinbuchstaben. Wenn es aber nur um case-Labels geht, kannst Du das auch so machen:
Delphi-Quellcode:
case Key of
  'a','A': Machwas();
  'b','B': Machwasanderes();
  ...
end;
Oder Du wandelst den ASCII-Code mit Chr() in Zeichen bzw. Zeichen mit Ord() in ASCII-Code um.

himitsu 8. Dez 2009 12:44

Re: case Key of ... Großbuchstaben
 
Tabellen: Bei Google suchenASCII oder Startmenü\Programme\Zubehör\Systemprogramme\Zeiche ntabelle (bzw. Startmenü > Ausführen "charmap")

Insgesamt wäre es aber erstmal besser zu sagen, wofür du es genau brauchst, denn erst dann kann man eine optimale Lösung finden.


Zitat:

Delphi-Quellcode:
case Key of
  'a','A': Machwas();
  'b','B': Machwasanderes();
  ...
end;

analog zu DeddyHs Code ginge auch swas
Delphi-Quellcode:
case Char(Ord(Key) or $20) of
  'a': Machwas();
  'b': Machwasanderes();
  ...
end;
Delphi-Quellcode:
case Char(Ord(Key) and not $20) of
  'A': Machwas();
  'B': Machwasanderes();
  ...
end;
Delphi-Quellcode:
//case UpperCase(Key)[1] of // wobei das hier nicht grad optimal wäre
case UpCase(Key) of // so isses doch besser ... danke Muetze1
  'A': Machwas();
  'B': Machwasanderes();
  ...
end;
[edit] UpperCase gegen UpCase getauscht

Muetze1 8. Dez 2009 12:57

Re: case Key of ... Großbuchstaben
 
Delphi-Referenz durchsuchenUpperCase() -> Delphi-Referenz durchsuchenUpCase()

Major1337 8. Dez 2009 13:03

Re: case Key of ... Großbuchstaben
 
danke ich habe so eine Lösung alá


Delphi-Quellcode:
case Key of
  'a','A': Machwas();
  'b','B': Machwasanderes();
  ...
end;
gesucht. Merci!

Major1337 8. Dez 2009 13:29

Re: case Key of ... Großbuchstaben
 
Hmm.. ich möchte es jetzt doch anderes Lösen ;-)

Ich möchte gerne das Drücken der Tasten aufzeichen, es klappt auch alles wunderbar, ich habe nur Probleme beim Anzeigen der Zeichen ö @ ? und noch anderen und halt die Unterscheidung zwischen Groß- und Kleinschreibung.


Delphi-Quellcode:
      case Key of
    //    VK_RETURN     :   Memo.Text := Memo.Text + ' [Enter] ';
    //    VK_BACK       :   Memo.Text := Memo.Text + ' [Backspace] ';
     //   VK_ESCAPE     :   Memo.Text := Memo.Text + ' [Esc] ';
     //   VK_SHIFT      :   Memo.Text := Memo.Text + ' [Shift] ';
     //   VK_MENU       :   Memo.Text := Memo.Text + ' [Alt] ';
      //  VK_CONTROL    :   Memo.Text := Memo.Text + ' [Strg] ';
      //  VK_DELETE     :   Memo.Text := Memo.Text + ' [Delete] ';
        VK_SPACE      :   Memo.Text := Memo.Text + ' ';
        VK_MULTIPLY   :   Memo.Text := Memo.Text + '*';
        VK_ADD        :   Memo.Text := Memo.Text + '+';
        VK_SUBTRACT   :   Memo.Text := Memo.Text + '-';
        VK_DECIMAL    :   Memo.Text := Memo.Text + '.';
        VK_DIVIDE     :   Memo.Text := Memo.Text + '/';
        188            :   Memo.Text := Memo.Text + ',';
        192            :   Memo.Text := Memo.Text + '>';
        222            :   Memo.Text := Memo.Text + Chr(39);
        220            :   Memo.Text := Memo.Text + '';
        219            :   Memo.Text := Memo.Text + '[';
        221            :   Memo.Text := Memo.Text + ']';
        186            :   Memo.Text := Memo.Text + ';';
        191            :   Memo.Text := Memo.Text + '/';
        190            :   Memo.Text := Memo.Text + '.';
        44             :   Memo.Text := Memo.Text + ',';
        187            :   Memo.Text := Memo.Text + '=';
        189            :   Memo.Text := Memo.Text + '-';

        65             :   Memo.Text := Memo.Text + 'a';
        66             :   Memo.Text := Memo.Text + 'b';
        67             :   Memo.Text := Memo.Text + 'c';
        68             :   Memo.Text := Memo.Text + 'd';
        69             :   Memo.Text := Memo.Text + 'e';
        70             :   Memo.Text := Memo.Text + 'f';
        71             :   Memo.Text := Memo.Text + 'g';
        72             :   Memo.Text := Memo.Text + 'h';
        73             :   Memo.Text := Memo.Text + 'i';
        74             :   Memo.Text := Memo.Text + 'j';
        75             :   Memo.Text := Memo.Text + 'k';
        76             :   Memo.Text := Memo.Text + 'l';
        77             :   Memo.Text := Memo.Text + 'm';
        78             :   Memo.Text := Memo.Text + 'n';
        79             :   Memo.Text := Memo.Text + 'o';
        80             :   Memo.Text := Memo.Text + 'p';
        81             :   Memo.Text := Memo.Text + 'q';
        82             :   Memo.Text := Memo.Text + 'r';
        83             :   Memo.Text := Memo.Text + 's';
        84             :   Memo.Text := Memo.Text + 't';
        85             :   Memo.Text := Memo.Text + 'u';
        86             :   Memo.Text := Memo.Text + 'v';
        87             :   Memo.Text := Memo.Text + 'w';
        88             :   Memo.Text := Memo.Text + 'x';
        89             :   Memo.Text := Memo.Text + 'y';
        90             :   Memo.Text := Memo.Text + 'z';


        VK_NUMPAD0     :   Memo.Text := Memo.Text + '0';
        VK_NUMPAD1     :   Memo.Text := Memo.Text + '1';
        VK_NUMPAD2     :   Memo.Text := Memo.Text + '2';
        VK_NUMPAD3     :   Memo.Text := Memo.Text + '3';
        VK_NUMPAD4     :   Memo.Text := Memo.Text + '4';
        VK_NUMPAD5     :   Memo.Text := Memo.Text + '5';
        VK_NUMPAD6     :   Memo.Text := Memo.Text + '6';
        VK_NUMPAD7     :   Memo.Text := Memo.Text + '7';
        VK_NUMPAD8     :   Memo.Text := Memo.Text + '8';
        VK_NUMPAD9     :   Memo.Text := Memo.Text + '9';

        48             :   Memo.Text := Memo.Text + '0';
        49             :   Memo.Text := Memo.Text + '1';
        50             :   Memo.Text := Memo.Text + '2';
        51             :   Memo.Text := Memo.Text + '3';
        52             :   Memo.Text := Memo.Text + '4';
        53             :   Memo.Text := Memo.Text + '5';
        54             :   Memo.Text := Memo.Text + '6';
        55             :   Memo.Text := Memo.Text + '7';
        56             :   Memo.Text := Memo.Text + '8';
        57             :   Memo.Text := Memo.Text + '9';

DeddyH 8. Dez 2009 13:37

Re: case Key of ... Großbuchstaben
 
Such doch mal nach EnterText in der CodeLib, da hat Jens das IIRC schön gelöst.

R2009 8. Dez 2009 13:39

Re: case Key of ... Großbuchstaben
 
Hi,
warum so kompliziert:

Delphi-Quellcode:
    221            :   Memo.Text := Memo.Text + ']';
ist das Gleiche wie:

Delphi-Quellcode:
    memo.text:=Memo.text + chr(221);
Wobei du jetzt die 223 auch variabel machen könntest:

Delphi-Quellcode:
    memo.text:=Memo.text + chr(n);
Kannst dir damit den ganzen case sparen!

Grüsse
rainer

Reinhard Kern 8. Dez 2009 13:58

Re: case Key of ... Großbuchstaben
 
Hallo

optimal, optimaler, am optimalsten ?:

Delphi-Quellcode:
      case Key of
        222            :   Memo.Text := Memo.Text + Chr(39);
        else               Memo.Text := Memo.Text + chr(Key);
        end;
Gruss Reinhard


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