Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
09.12.2001, 12:25
feigling



Ich hab folgendes Problem. Ich habe mir mit Delphi ein Programm geschrieben, dass die Tasten speichert, die gedrückt worden sind und zwar in Zahlen (jeder Buchstabe hat eine Zahl bei ANSI,dass ist ja vorgegeben).
Ich habe also die Zahlen. Wie kann ich dem Programm beibringen, dass wenn er zum Beispiel die Zahl 65 bekommt dann wieder den Buchstaben A ausgibt. Ich habe das jetzt erstmal so in einer Funktion gelöst:

Quellcode:

function processkey(key : word) : string;
begin
  if key = 13 then
    result := 'ENTER'
  else if key = 37 then
    result := 'LINKS'
  else if key = 38 then
    result := 'HOCH'
  else if key = 39 then
    result := 'RECHTS'
  else if key = 40 then
    result := 'RUNTER'
  else if key = 48 then
    result := '0'
  else if key = 49 then
    result := '1'
  else if key = 50 then
    result := '2'
  else if key = 51 then
    result := '3'
  else if key = 52 then
    result := '4'
  else if key = 53 then
    result := '5'
  else if key = 54 then
    result := '6'
  else if key = 55 then
    result := '7'
  else if key = 56 then
    result := '8'
  else if key = 57 then
    result := '9'
  else if key = 65 then
    result := 'A'
  else if key = 66 then
    result := 'B'
  else if key = 67 then
    result := 'C'
  else if key = 68 then
    result := 'D'
  else if key = 69 then
    result := 'E'
  else if key = 70 then
    result := 'F'
  else if key = 71 then
    result := 'G'
  else if key = 72 then
    result := 'H'
  else if key = 73 then
    result := 'I'
  else if key = 74 then
    result := 'J'
  else if key = 75 then
    result := 'K'
  else if key = 76 then
    result := 'L'
  else if key = 77 then
    result := 'M'
  else if key = 78 then
    result := 'N'
  else if key = 79 then
    result := 'O'
  else if key = 80 then
    result := 'P'
  else if key = 81 then
    result := 'Q'
  else if key = 82 then
    result := 'R'
  else if key = 83 then
    result := 'S'
  else if key = 84 then
    result := 'T'
  else if key = 85 then
    result := 'U'
  else if key = 86 then
    result := 'V'
  else if key = 87 then
    result := 'W'
  else if key = 88 then
    result := 'X'
  else if key = 89 then
    result := 'Y'
  else if key = 90 then
    result := 'Z'
  else if key = 96 then
    result := '0'
  else if key = 97 then
    result := '1'
  else if key = 98 then
    result := '2'
  else if key = 99 then
    result := '3'
  else if key = 100 then
    result := '4'
  else if key = 101 then
    result := '5'
  else if key = 102 then
    result := '6'
  else if key = 103 then
    result := '7'
  else if key = 104 then
    result := '8'
  else if key = 105 then
    result := '9';
end;

Das ist zwar jetzt schon alles getippt und es eigentlich nicht mehr nötig, da was zu ändern, aber ich denke mal, dass jeder seinen Code so knapp wie möglich machen will. Der soll mir also nur wenn ich dem die Zahl gebe den Buchstaben ausgeben. Gibt es da eine spezielle Funktion, die ich in der Hilfe nicht finde ?

Dann habe ich noch eine Frage:
Gibt es irgendwie eine Möglichkeit, dass wenn man sein Programm startet, dass es dann automatisch die Num Lock aktiviert. Vielleicht über eine Message an Windows ?

Falls jemand dafür Lösungen hat, dann nur her damit :)

Schonmal vielen Dank im Vorraus.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
09.12.2001, 13:41
Jehova-3



Das links, rechts etc. wird da nicht funktionieren (müßtest du dann selber abfangen), aber die Funktion chr bietet genau das, was du suchst.

--

Are you gonna miss me ?
Only until I go to the Newsstand and buy a Hustler

zum Seitenanfang zum Seitenende Profil || Suche
002
09.12.2001, 13:54
Tron



ich wuerde ein const string array verwenden und die zahl als index benutzen

ich kenn leider den genauen syntax fuer delphi nicht, aber in c sieht das so aus:

const char* zeichen[] =
{
"null",
"",
"",
"",
"",
"",
"",
"bell",
"backspace",
"tabulator",
"line feed",
"",
"",
"carriage return",
.
.
.
};

ich denke du weisst, was ich meine

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
003
09.12.2001, 16:55
feigling



hmm, dass wäre ne Möglichkeit, aber ich denke, dann lasse ich es doch lieber bei der Funktion. Da diese aber läuft, lass ich das einfach. Macht ja nix, wenn der Code etwas länger wird.
Vielleicht weiß einer ja, wie man die Num taste aktivieren kann (vom Programm aus)

--

zum Seitenanfang zum Seitenende Profil || Suche
004
09.12.2001, 17:14
TheTinySteini



Ähh... nimm chr, echt. Oder sowas:

Quellcode:var result: String[2];
begin
if {...blabla, sonderbehandlung für enter, etc...}
else result[1] := char( key );
end;

Du brauchst halt Sonderbehandlung für Enter und Links, Recht, Oben, Unten, Hinten, Vorne... aber für Buchstaben und so geht's.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
005
09.12.2001, 17:37
feigling



Klar, dass ich für Sonderzeichen auch ne extra Überprüfung braucht, aber wenn das echt so geht mit den normalen Buchstaben, dann werde ich es mal ausprobieren.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
09.12.2001, 18:04
Retro



Ich würd dir noch ne kleinigkeit raten: #Zahl :)

Und wenn es dir nur um die Länge des Quellcodes geht, pack das Zeug in ne DLL. Aber warum benutzt du noch die "altmodischen" Zahlen wo keiner durchblickt? In Delphi kannst doch alles schön mit VK_BLABLA machen?

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
007
09.12.2001, 19:14
feigling



Ja, klar.
ich könnte das so machen,. aber ich will, dass der die Keys speichert, die man drückt und da finde ich, dass man das besser in einem integer array speichern kann. Außerdem ist diese Art besser für das Programm :)

--

zum Seitenanfang zum Seitenende Profil || Suche