| Autor |
Beitrag |
MadMaiden
Hält's aus hier
Beiträge: 13
|
Verfasst: Mi 23.07.03 12:16
Hi!
Wie kann ich mein Programm dazu bringen, dass er eine bestimmte Zeit wartet so dass eine Taste gedruckt werden soll. Wenn keine Taste in dieser Zeitspanne gedruckt wird, soll mein Program weitermachen. Ich kann den Tastendruck nur dann simuliren wenn keine Taste gedruckt wird, ansonsten muss warten bis die Zeit um ist.
(kann man dass auch ohne TTimer machen??? )
_________________ Life's a lesson...and I'm the Theatcher
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mi 23.07.03 15:23
Im TurboPascal gab es dafür KeyPressed, so viel sollte als Anstich reichen - aber leider gibt es das im Delphi scheinbar nicht mehr. Auf meine Frage vor einiger Zeit, gab es keine brauchbaren Antworten.
KEYPRESSED
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 23.07.03 15:38
Hallo,
Wo soll die Taste den eingegeben werden, also soll der Key drieckt ans Formular gesendet werden oder in ein Edit Feld.
Was du machen kannst ist dein Programm in eine Schleife laufen lassen, und diese eben nach einer Weile wieder verlassen. In der Schleife musst du Application.ProcessMessages aufrufen. In der OnKeyPress oder OnKeyDown Methode des Tastendruck-Empfangenden Objektes kannst du dann ein Flag setzen, über welches die Schleife vorläufig beendet werden kann.
Gruß
Klabautermann
|
|
MadMaiden 
Hält's aus hier
Beiträge: 13
|
Verfasst: Mi 23.07.03 20:38
das sollte auch Pascal werden, aber wie kann ich mit keypressed herausfinden, welche taste gedruckt wurde.... gibt es irgendeine andere Funkion, dass sowas macht, oder kann man es irgenwie umgehen...?
_________________ Life's a lesson...and I'm the Theatcher
|
|
Adrian
      
Beiträge: 314
|
Verfasst: Fr 25.07.03 14:40
Servus!
So - auszugsweise - könnt's gehen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| var Form1: TForm1; Gedrueckt : Boolean; Taste : Char;
implementation
{$R *.dfm}
procedure Delay(ms : DWord);
var TheTime : DWord; begin TheTime := GetTickCount + ms; while GetTickCount < TheTime do Application.ProcessMessages; end;
procedure TForm1.Button1Click(Sender: TObject); begin Gedrueckt:=False; Delay(3500); if not Gedrueckt then begin Edit1.Text:='nichts gedrückt'; end else begin Edit1.Text:=Taste+' gedrückt'; end; end;
procedure TForm1.Button1KeyPress(Sender: TObject; var Key: Char); begin Gedrueckt:=True; if Gedrueckt then Taste:=Key; end; |
Gruß,
Adrian
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Sa 26.07.03 11:42
Das geht aber nicht in einer Konsolenanwendung 
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Adrian
      
Beiträge: 314
|
Verfasst: So 27.07.03 23:11
Servus!
Da habe ich doch glatt überlesen, daß es ein Pascal-Programm werden soll. Also hier ein neuer Denkanstoß:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| program Taste;
uses dos, crt;
var H,M,S,Sn,D : Word; HoerAufKey, HoerAufZeit : Boolean;
begin ClrScr; HoerAufZeit:=False; HoerAufKey:=False; Write('Bitte geben Sie innerhalb von 12 Sekunden Ihre Kennung ein: '); GetTime(H,M,S,D); Repeat GetTime(H,M,Sn,D); If Keypressed then HoerAufKey:=True; If Sn>S+12 then HoerAufZeit:=True; Until (HoerAufKey) or (HoeraufZeit); Writeln; If HoerAufKey then Writeln('Kennung: '+ReadKey); If HoerAufZeit then Writeln('Keine Kennung eingegeben.'); Readln; end. |
Gruß,
Adrian
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mo 28.07.03 18:47
Ja, aber gibt es die Funktion KeyPressed nicht auf noch für Konsolenanwendungen (mit Delphi!) (untern anderem Namen selbstverständlich)?
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|