AGB  ·  Datenschutz  ·  Impressum  







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

Delphi - Versteckte Tastatureingaben

Ein Thema von DenSchub · begonnen am 11. Jun 2006 · letzter Beitrag vom 12. Jun 2006
Antwort Antwort
DenSchub

Registriert seit: 4. Jun 2006
Ort: Balingen
209 Beiträge
 
#1

Delphi - Versteckte Tastatureingaben

  Alt 11. Jun 2006, 12:07
Hallo.

Ich möchte in einem Programm von mir so ne geheimfunktion einbauen.
Dazu muss man einfach einen Text eintippen (ohne eingabefeld etc.).

Das soll so gehen wie in nem Spiel Cheatcodes.
Wie schaffe ich das in Delphi?

Ich hatte zwar schonmal folgende Idee, aber die ist nicht gut.

1. Ich hab ein Edit reingemacht.
2. Das edit habe ich dann mit edit1.visible := true; unsichtbar gemacht und
dann den Fokus draufgemacht.

Aber mit 'nem Klick auf das Formular war dass wieder weg (der Fokus).

Wie mache ich dass?


Dennis Schubert
Ground Zero is nichts gegen mein Schreibtisch.
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 30. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Delphi - Versteckte Tastatureingaben

  Alt 11. Jun 2006, 12:14
Ich würde eine globale String-Variable anlegen.
Dann solltest du eine OnKeyPress-Prozedur programmieren, sodass in den String immer das neueste Zeichen dazugeschrieben wird. Diese Prozedur stellstz du dann bei allen Komponenten als OnKeyPress-Ereignis ein...

Den String kannst du dann auch entweder in der Prozedur auswerten oder alle paar Sekunden per Timer auswerten und dann löschen...

Soll ich dir das mal kurz coden? (Falls du's nicht verstanden hast )

CK_CK
  Mit Zitat antworten Zitat
monta

Registriert seit: 18. Okt 2004
Ort: Dresden
141 Beiträge
 
#3

Re: Delphi - Versteckte Tastatureingaben

  Alt 11. Jun 2006, 12:19
Wäre es dafür nicht sinnvoller, die Tasteneingaben über das KeyDown bzw. KeyUp Event abzufangen, und dann zu prüfen, ob ein entsprechender Buchstabe eingegeben wurde oder eben nicht.

Dazu musst du das KeyPreview der Form auf true stellen, und über KeyDown der Form erhältst du dann die Werte der gedrückten Tasten. Mittels Ord kannst du die dann auf die entsprechenden Buchstaben prüfen.

Delphi-Quellcode:
procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var text: string;
begin
  if Ord('A') = Key then
    //a wurde gedrückt
end;
auf die Atr könntest du ja den ganzen string Buchstaben für Buchstaben durchgehen, ist meinetwegen der Anfangsbuchstaben eingegeben worden, springst du zur nächsten Stelle, ist die nächste Stelle falsch, fängst du bei der nächsten Prüfung wieder von vorne an.

//und wieder zu langsam, aber grob das selbe
Johannes M.
.
  Mit Zitat antworten Zitat
HuxXx
(Gast)

n/a Beiträge
 
#4

Re: Delphi - Versteckte Tastatureingaben

  Alt 11. Jun 2006, 13:25
Zitat von DenSchub:
1. Ich hab ein Edit reingemacht.
2. Das edit habe ich dann mit edit1.visible := true; unsichtbar gemacht und dann den Fokus draufgemacht.
Du hast die Edit wohl mit "Edit1.Visible:=false;" unsichtbar gemacht, das was du hingeschrieben hast, macht es wieder sichtbar.
Und eine unsichtbare Komponente kann den Focus nicht bekommen.

Also so würde ich es machen:

Delphi-Quellcode:
var text:String='Das_Wort';
var akt_pos:Integer=1;

procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = ord(text[akt_pos]) then begin
    akt_pos:= akt_pos+1;

// Wort ist vollständig eingegeben worden
if akt_pos = length(text) then begin
ShowMessage('Hier deine Funktion');
end;
////////

end else begin // Falsch eingegeben, nochmal von Anfang...
akt_pos:=1;
end;

end;
Nicht sicher, ob das stimmt. (Kein Delphi zur Hand)...
  Mit Zitat antworten Zitat
DenSchub

Registriert seit: 4. Jun 2006
Ort: Balingen
209 Beiträge
 
#5

Re: Delphi - Versteckte Tastatureingaben

  Alt 11. Jun 2006, 14:18
Hallo.

@HuXX: Habs Probiert, aber geht nit. Ausserdem verstehe ich den Code nit so.

@ck_ck: Da ich nicht grad der beste bin, gerne doch...

Trotzdem Danke für die schnelle Antwort! echt super!

mfg

Dennis
Dennis Schubert
Ground Zero is nichts gegen mein Schreibtisch.
  Mit Zitat antworten Zitat
monta

Registriert seit: 18. Okt 2004
Ort: Dresden
141 Beiträge
 
#6

Re: Delphi - Versteckte Tastatureingaben

  Alt 11. Jun 2006, 14:29
^^was gibts den bei Huxx für ne Fehlermeldung? Sowas hilft heir schließlich weiter, was das Code verstehen angeht, versuch ichs mal zu erklären:

Delphi-Quellcode:
var text:String='Das_Wort';
//enthält dein geheimes Wort welches eingegebn werden soll
var akt_pos:Integer=1;
//enthält die Position des aktuellen Buchstabens, welcher überprüft wird

procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
//Procedure des Forms, welche aufgerufen wird, sobald eine Taste gedrückt wird
begin
  if Key = ord(text[akt_pos]) then begin
//prüft, ob die aktuelle Eingabe (Taste) dem Buchstaben an der aktuellen Stelle des Wortes entspricht
    akt_pos:= akt_pos+1;
//ist dies der FAll, wird für die nächste Eingabe zur nächsten Position im Wort gesprungen

// Wort ist vollständig eingegeben worden
  if akt_pos = length(text) + 1 then //(+ 1 ergänzt, da snst der letzte Buchstaben nicht geprüft wird.
  begin
//prüft, ob die aktuelle Position, die ja bei richtigem Buchstabe eins weiter rückt, der Stringlänge entspricht, wenn ja, ist das Wort vollständig
    ShowMessage('Hier deine Funktion');
//deine Aktion
  end;
////////

end
else
begin // Falsch eingegeben, nochmal von Anfang...
akt_pos:=1;
//Sobald die aktuelle Eingabe nicht dem Buchstaben der aktuellen Position im Teststring entspricht, wird die Position auf Begin zurückgesetzt, weil das Wort ja am Stück eingegeben werden muss.
end;

end;
[/quote]

Meiner Meinung nach, ist diese Änderung noch wichtig:
  if akt_pos = length(text) + 1 then //(+ 1 ergänzt, da snst der letzte Buchstaben nicht geprüft wird. ^^ansonsten müsste es stimmen.

Nich böse sein, falls ich zu grundlegend rangehe, aber hast du auch die Variablen global deklariert:
Delphi-Quellcode:
var
  Form1: TForm1;
  //da...

implementation

var //oder da...

{$R *.DFM}
Und hast du das entsprechende KeyDown Event der Form belegt und nicht nur den Code kopiert, wenn du ihn nur kopierts, wird er nicht aufgerufen.


Übrigens herzlich Willkommen in der DP
Johannes M.
.
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 30. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Delphi - Versteckte Tastatureingaben

  Alt 11. Jun 2006, 14:41
Also, das hier funktioniert:
1. globale Variablen (vor der ersten Prozedur einfügen:
Code:
const
  geheimwort: String = 'geheimwort';

var
  tmpstr: String = '';
2. Den OnKeyPress-Event des Formulars doppelt anklicken und den Code einfügen:
Code:
//aktuelles Zeichen vergleichen//
  tmpstr := tmpstr + key;

  //ganzes Wort gefungen
  if Copy(tmpstr,Length(tmpstr)-Length(geheimwort)+1,Length(geheimwort))=geheimwort then begin
    ShowMessage('GEHEIMWORT EINGETIPPT'); //oder andere Prozedur...
    tmpstr := '';
  end;
3. Alle Komponenten markieren, die auf dem Formular sind und als OnKeyPress-Event "FormKeyPress" auswählen (Drop-Down-Liste)...

Bei mir klappt das wunderbar... (die Version oben hat bei mir übrigens auch nicht funktioniert...)

Viele Grüße,
CK_CK
  Mit Zitat antworten Zitat
DenSchub

Registriert seit: 4. Jun 2006
Ort: Balingen
209 Beiträge
 
#8

Re: Delphi - Versteckte Tastatureingaben

  Alt 12. Jun 2006, 17:19
Also:

Die On-Press-Methode hat funktioniert!
Vielen dank!

@Monta: Habs auch in beiden varianten ausprobiert!

Dennis Schubert
Ground Zero is nichts gegen mein Schreibtisch.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:55 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