![]() |
Re: Taschenrechner über Tastatur bedienen
Nee, das will ich nicht machen.
Es soll ja so eine Art Easteregg (vom Programmierer versteckte Funktion) sein. Also sollen nur eingeweihte diese Funktion finden. Deshalb würde ich das gerne mit Tastenkombinationen lösen. Gruß Stefan |
Re: Taschenrechner über Tastatur bedienen
Hallo Stefan,
EasterEggs kannst du über die KeyPreview der Form realisieren. Dazu deklarierst du eine private Form-Variable EasterEgg als String, fügst jedes eingegebene Zeichen hinzu und löschst alles, sobald eine falsche Taste gedrückt wurde. Sobald ein von dir erwarteter Text in der Varaible steht kannst du die zugehörige Aktion starten. Freundliche Grüße |
Re: Taschenrechner über Tastatur bedienen
Erstmal danke für deine Antwort, aber ich hab Probleme mit der Umsetzung.
Hier mein bisheriger Quellcode:
Code:
Hoffe ihr findet meinen Fehler und danke schonmal im Voraus.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
var kombi:string; begin kombi:=''; if key='1' then button1.click; if key='2' then button2.click; if key='3' then button3.click; if key='4' then button4.click; if key='5' then button5.click; if key='6' then button6.click; if key='7' then button7.click; if key='8' then button8.click; if key='9' then button9.click; if key='0' then button10.click; if (key=',') or (key='.') then button11.click; if key='n' then button12.click; if key=chr(13) then button13.click; if key='-' then button14.click; if key='+' then button15.click; if key='*' then button16.click; if key='/' then button17.click; if key=chr(8) then button19.click; if key='h' then kombi:='h'; if (kombi='h') and (key='e') then kombi:='he'; <==== an der Stelle hapert es wohl :wall: if kombi='he' then showmessage('huhu') else kombi:=''; end; Gruß Stefan |
Re: Taschenrechner über Tastatur bedienen
Hallo Stefan,
schau dir mal ![]() Die IF-Anweisungen könntest du übrigens durch eine ![]() ![]() Gruß Hawkeye |
Re: Taschenrechner über Tastatur bedienen
Hallo Hawkeye219,
vielen Dank für die Seite, ist alles super erklärt. Aber wie mach ich das denn mit einer Case-Anweisung, das geht doch nur mit ordinalen Typen, oder? Gruß Stefan |
Re: Taschenrechner über Tastatur bedienen
Zitat:
Delphi-Quellcode:
Der Vorteil der CASE-Lösung besteht darin, daß nur ein Zweig durchlaufen wird - bei deinem Code werden immer alle IF-Anweisungen abgearbeitet. Ein CASE kann die ebenfalls mögliche (aber unübersichtliche) Schachtelung von "IF..THEN..ELSE IF"-Strukturen ersetzen.
case key of
'1': button1.click; '2': button2.click; '3': button3.click; ... ',', '.': button11.click; ... else // sonstige Tasten end; Gruß Hawkeye |
Re: Taschenrechner über Tastatur bedienen
genauso könntenst du es machen, dann in den else-teil so etwas wie
Delphi-Quellcode:
Ohne Garantie ;)
easterstring:=easterstring+key;
if Copy('GEHEIMERTEXT', 1, Length(easterstring))<>easterstring then easterstring:=''; |
Re: Taschenrechner über Tastatur bedienen
@Hawkeye219: Ups, stand wohl etwas auf dem Schlauch... :mrgreen: :wall:
@inherited: Auch ne gute Lösung, aber 1. funktioniert es bei mir leider nicht und 2. ist die jetztige Lösung viel schöner :P , nichts für ungut... :) Gruß Stefan |
Re: Taschenrechner über Tastatur bedienen
:gruebel:
Mein beitrag bezog sich doch auf hawkeye, ich habe nur den von ihm ausgelassenem else-teil beschrieben |
Re: Taschenrechner über Tastatur bedienen
Hallo inherited,
mir war schon klar, dass du den else-Teil meintest aber irgendwie funktioniert deine Lösung trotzdem nicht. Mit der anderen Lösung meinte ich, die mir von Hawkeye219 empfohlene Seite, auf der ein Tutorial zum Programmieren eines Eastereggs war. Aber es wäre trotzdem cool, deine Lösung umzusetzen, schon allein der Einfachheit halber. Egal, hier auf jeden Fall mein Quelltext:
Code:
Wahrscheinlich hab ich den Copy-Befehl missverstanden, denn jetzt kommt die Botschaft schon allein, wenn ich nur t drücke.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
var easterstring:string; begin easterstring:=''; case key of '1' : button1.click; '2' : button2.click; '3' : button3.click; '4' : button4.click; '5' : button5.click; '6' : button6.click; '7' : button7.click; '8' : button8.click; '9' : button9.click; '0' : button10.click; ',' : button11.click; '.' : button11.click; 'n' : button12.click; chr(13) : button13.click; '-' : button14.click; '+' : button15.click; '*' : button16.click; '/' : button17.click; chr(8) : button19.click; 'p' : button20.click; 'w' : button21.click; 'q' : button22.click; 'r' : button23.click; else begin easterstring:=easterstring+key; if Copy('test', 1, Length(easterstring))<>easterstring then easterstring:='' else showmessage('hey'); end; end; end; Danke schonmal im Voraus für die Lösung des Problems... :mrgreen: Gruß Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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