AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Taschenrechner über Tastatur bedienen

Offene Frage von "ghost1601"
Ein Thema von Stefan92 · begonnen am 10. Jan 2007 · letzter Beitrag vom 19. Jan 2007
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#41

Re: Taschenrechner über Tastatur bedienen

  Alt 13. Jan 2007, 13:55
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#42

Re: Taschenrechner über Tastatur bedienen

  Alt 13. Jan 2007, 14:06
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
  Mit Zitat antworten Zitat
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#43

Re: Taschenrechner über Tastatur bedienen

  Alt 14. Jan 2007, 10:47
Erstmal danke für deine Antwort, aber ich hab Probleme mit der Umsetzung.
Hier mein bisheriger Quellcode:
Code:
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;
Hoffe ihr findet meinen Fehler und danke schonmal im Voraus.

Gruß

Stefan
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#44

Re: Taschenrechner über Tastatur bedienen

  Alt 14. Jan 2007, 11:07
Hallo Stefan,

schau dir mal diese Seite an.

Die IF-Anweisungen könntest du übrigens durch eine Delphi-Referenz durchsuchenCASE-Anweisung ersetzen. Eine mögliche Alternative ist die Verwendung der Komponente Delphi-Referenz durchsuchenTAction. Eine Action kann mit mehreren Auslösern (z.B. TButton, TMenuItem) verbunden werden und gestattet auch die Definition eines Shortcuts.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#45

Re: Taschenrechner über Tastatur bedienen

  Alt 14. Jan 2007, 13:11
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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#46

Re: Taschenrechner über Tastatur bedienen

  Alt 14. Jan 2007, 13:27
Zitat von Stefan92:
Aber wie mach ich das denn mit einer Case-Anweisung, das geht doch nur mit ordinalen Typen, oder?
char _ist_ ein ordinaler Typ.

Delphi-Quellcode:
case key of
  '1': button1.click;
  '2': button2.click;
  '3': button3.click;
  ...
  ',', '.': button11.click;
  ...
else
  // sonstige Tasten
end;
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.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#47

Re: Taschenrechner über Tastatur bedienen

  Alt 14. Jan 2007, 15:00
genauso könntenst du es machen, dann in den else-teil so etwas wie
Delphi-Quellcode:
  easterstring:=easterstring+key;
  if Copy('GEHEIMERTEXT', 1, Length(easterstring))<>easterstring then
    easterstring:='';
Ohne Garantie
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#48

Re: Taschenrechner über Tastatur bedienen

  Alt 14. Jan 2007, 17:15
@Hawkeye219: Ups, stand wohl etwas auf dem Schlauch...
@inherited: Auch ne gute Lösung, aber
1. funktioniert es bei mir leider nicht und
2. ist die jetztige Lösung viel schöner , nichts für ungut...

Gruß

Stefan
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#49

Re: Taschenrechner über Tastatur bedienen

  Alt 14. Jan 2007, 19:21

Mein beitrag bezog sich doch auf hawkeye, ich habe nur den von ihm ausgelassenem else-teil beschrieben
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#50

Re: Taschenrechner über Tastatur bedienen

  Alt 15. Jan 2007, 07:04
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:
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;
Wahrscheinlich hab ich den Copy-Befehl missverstanden, denn jetzt kommt die Botschaft schon allein, wenn ich nur t drücke.
Danke schonmal im Voraus für die Lösung des Problems...

Gruß

Stefan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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