![]() |
"keypressed" / "readkey" Ersatz?
Hallo,
ich suche einen Ersatz für die Fuktionen "keypressed" und "readkey" aus Pascal. Ich möchte gern eine Endlosschleife programmieren, die aber auf Tastendruck reagieren kann. Hat jemand eine Idee außer einen Timer zu benutzen, da dieser zu langsam ist. Christopher |
Re: "keypressed" / "readkey" Ersatz?
Delphi-Quellcode:
var
Run: Boolean = True; // global [..] while Run do begin ...; end; [..] // OnKeypress der Form: Run := False; |
Re: "keypressed" / "readkey" Ersatz?
Moin Christopher,
Du könnstest das so machen: In der Endlosschleife fragst Du als Abbruchbedingung ein Flag ab, dass Du mit Hilfe des OnKeyPress oder OnKeyDown Ereignisses setzt. In der Schleife solltest Du mit Hilfe von Application.ProcessMessages noch dafür sorgen, dass das OnKeyPress oder OnKeyDown Ereignis überhaupt ausgeführt werden. Was hast Du denn mit dieser Schleife vor? Vielleicht gibt's ja noch eine andere Lösung. |
Re: "keypressed" / "readkey" Ersatz?
Hallo,
ein ähnliches Problem habe ich auch. Ich habe ein Array in dem ich Bildpfade gespeichert habe. Nun möchte ich das alle 5 Sekunden ein neues (das nächste n+1) Bild angezeigt wird. Der Haken dabei ist nur, dass wenn der Bentzer ESC drückt, soll das Proggy kein Bild mehr anzeigen und auch den "Timer" (die 5 Sekunden) stoppen. Wenn der Benutzer aber die rechte Pfeiltaste betätigt, soll gleich das nächste Bild angezeigt werden und nicht erst nach 5 Sekunden. das gleiche sollte mit der Linken Pfeiltaste funktioniern, nur halt andersrum also dann das vorherige Bild. Habe es mit einer for shleife probiert und break dabei eingesetzt. Nur leider kommt es häufig vor dass das Proggy dann statt nur einem Bild vor 2 vor macht. Wenn gewünscht kann ich auch mal den Code posten. Wäre für einen kleinen Denkanstoß auch sehr dankbar. MfG Flattman |
Re: "keypressed" / "readkey" Ersatz?
Liste der Anhänge anzeigen (Anzahl: 1)
Als "normale" Anwendung oder als Konsolen-Anwendung?
@flattman: schau mal hier rein MfG Frank |
Re: "keypressed" / "readkey" Ersatz?
Hallo Luckie,
du hast da einen Denkfehler, wenn ich die Schleife aus einer Procedure laufen lasse, wird erst die KeyDown-Prozedure anschließende oder zuvor ausgeführt,aber nie gleichzeitig bearbeitet. Also läuft nur die Endlos-Schleife und die Globalvariable kann währendessen nicht geändert werden. Meine Programmidee: Ein Männchen(Punkt), den man mit den Cursortasten steuern kann. Soweit noch kein Problem. Der Punkt soll aber in Bewegung bleiben. Ich brauch also eine Schleife, die einen Zug macht, kuckt ob die Richtung geändert werden muss und wieder einen Zug macht. Die Abbruchbedingung ist erst mal Nebensache. Christopher |
Re: "keypressed" / "readkey" Ersatz?
Delphi-Quellcode:
Geht wunderbar.
var
Run: Boolean = True; procedure TForm1.Button1Click(Sender: TObject); var idx: Integer; begin idx := 0; while Run do begin Inc(idx); Listbox1.Items.Add(IntToStr(idx)); Application.ProcessMessages; sleep(25); // dami man was sieht end; end; procedure TForm1.Button2Click(Sender: TObject); begin Run := False; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_ESCAPE then Run := False; end; q.e.d. |
Re: "keypressed" / "readkey" Ersatz?
:hello: :hello: ICH LIEBE DIESES FORUM :hello: :hello:
ist wirklich das beste Delphiforum was es gibt. Hier wird einem schnell und unkompliziert geholfen. BIG THX an himitsu genau sowas habe ich gesucht. werde mich gleich ran machen mir einen eigenen code zuschreiben, denn klauen kann ja jeder :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 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