AGB  ·  Datenschutz  ·  Impressum  







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

"keypressed" / "readkey" Ersatz?

Ein Thema von DarkToast · begonnen am 31. Okt 2003 · letzter Beitrag vom 31. Okt 2003
Antwort Antwort
DarkToast

Registriert seit: 30. Okt 2003
3 Beiträge
 
Delphi 5 Professional
 
#1

"keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 10:26
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: "keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 10:32
Delphi-Quellcode:
var
  Run: Boolean = True; // global

[..]
  while Run do
  begin
    ...;
  end;

[..]

// OnKeypress der Form:
  Run := False;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: "keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 10:33
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
flattman

Registriert seit: 2. Nov 2002
Ort: Oldenburg (Oldenburg)
39 Beiträge
 
Delphi 2009 Professional
 
#4

Re: "keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 11:19
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#5

Re: "keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 12:12
Als "normale" Anwendung oder als Konsolen-Anwendung?

@flattman: schau mal hier rein

MfG Frank
Angehängte Dateien
Dateityp: exe bilderschau.exe (367,2 KB, 20x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DarkToast

Registriert seit: 30. Okt 2003
3 Beiträge
 
Delphi 5 Professional
 
#6

Re: "keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 12:56
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: "keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 13:05
Delphi-Quellcode:
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;
Geht wunderbar.

q.e.d.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
flattman

Registriert seit: 2. Nov 2002
Ort: Oldenburg (Oldenburg)
39 Beiträge
 
Delphi 2009 Professional
 
#8

Re: "keypressed" / "readkey" Ersatz?

  Alt 31. Okt 2003, 17:56
ICH LIEBE DIESES FORUM

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
  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 00:37 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