Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln (https://www.delphipraxis.net/183530-case-konstrukt-vereinfachen-zahl-aus-vk_fx-ermitteln.html)

Helmi 17. Jan 2015 16:01

case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
Hallo,

kann man dieses case-Konstrukt etwas vereinfachen?
Delphi-Quellcode:
      case Key of
        VK_F1: begin
                  MSGButton_click(1);
                end;
        VK_F2: begin
                  MSGButton_click(2);
                end;
        VK_F3: begin
                  MSGButton_click(3);
                end;
        VK_F4: begin
                  MSGButton_click(4);
                end;
        VK_F5: begin
                  MSGButton_click(5);
                end;
        VK_F6: begin
                  MSGButton_click(6);
                end;
        VK_F7: begin
                  MSGButton_click(7);
                end;
        VK_F8: begin
                  MSGButton_click(8);
                end;
        VK_F9: begin
                  MSGButton_click(9);
                end;
        VK_F10: begin
                  MSGButton_click(10);
                end;
      end;
ich hätt gern etwas in dieser Art:

Delphi-Quellcode:
      case Key of
        VK_F1..VK_F10: begin
                          MSGButton_click(<Nummer der F-Taste>);
                        end;
Nur dazu müsste ich an die Zahl hinter "VK_F" rankommen

mkinzler 17. Jan 2015 16:09

AW: case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
Wenn ich es richtig im Kopf habe ist der Wert von VK_F1 70 dann sollte
Delphi-Quellcode:
case Key of
        VK_F1..VK_F10: begin
                          MSGButton_click(key-69);
                        end;
funktionieren.

Helmi 17. Jan 2015 16:18

AW: case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
mmh
auf die Idee hätt ich auch kommen können - einfach die Nummer zurückrechnen

ich bin mal der Deklaration von VK_F1 nachgegangen und komm dann bei 112 raus


das heisst, es müsste dann lauten "Key - 111"

Dalai 17. Jan 2015 16:48

AW: case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
Was'n hier los? Genau damit hab ich auch grad zu tun 8-).

MfG Dalai

Helmi 17. Jan 2015 16:53

AW: case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
Zitat:

Zitat von Dalai (Beitrag 1286839)
Was'n hier los? Genau damit hab ich auch grad zu tun 8-).

Bazinga! :P:lol:

Namenloser 17. Jan 2015 17:00

AW: case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
Aber bitte keine Magic Numbers.
Delphi-Quellcode:
case Key of
  VK_F1..VK_F10: MSGButton_click(Key - VK_F1 + 1);
end;
Das ist schon verständlicher. Und das Rechnen hättest du dir so auch sparen können ;)

Helmi 17. Jan 2015 17:10

AW: case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
na gut

aber nur weil du es bist :-)

Dejan Vu 17. Jan 2015 20:34

AW: case-Konstrukt vereinfachen - Zahl aus VK_Fx ermitteln
 
Na, Gott Sei Dank ist VK_F[x+1] immer gleich VK_Fx + 1, denn wenn sich das mal ändert, oder auf anderen Systemen mal nicht so ist, würde das zu einem wirklich schwer zu findenden Fehler führen.

Ich würde die 'Formel' Key-VK_F1+1 noch in eine separate Funktion packen. Dann ist das noch dokumentiert.
Delphi-Quellcode:
Function VirtualKeyToFunctionNumber (aKey : Cardinal) : Integer;
Begin
  Result := aKey - VK_F1 + 1;
End;
Wie immer: Geschmacksache.


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