Rechercher : dans
Par :

[Delphi] Faire une pause dans une procedure

Dernière réponse le 27 aoû 2007 à 10:20:01 le.schtroumpf.jedi, le 23 sep 2001 à 14:10:53 
 Signaler ce message aux modérateurs

J'ai dévellopé en Delphi une application qui doit attendre une frappe au clavier ou la fin d'un timer pour continuer.

Mon pb est le suivant, comment faire une pause dans une procedure ou est ce possible ?

La seule solution que j'ai trouvé est de décompser la procedure en plusieurs procedures, ainsi le timer ou le clavier lance la suite.

Je trouve ma solution pas très optimale car j'ai du faire appel à 7 procedure pour faire le traitement d'une seule.

Pourriez vous m'indiquer si une autre solution existe ?

Merci...

Meilleures réponses pour « [Delphi] Faire une pause dans une procedure » dans :
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
Les procédures en assembleur VoirLa notion de procédure En langage assembleur, on appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la procédure. Cette notion de sous-programme est généralement appelée fonction dans d'autres...

1

nabzone, le 23 sep 2001 à 23:05:32

Pour faire une pause il existe la célébre fonction :
sleep(X)
si X=1000 ---> 1 seconde
si X=2000 ---> 2 secondes
...
...

Répondre à nabzone

3

le.schtroumpf.jedi, le 24 sep 2001 à 11:35:53

Comment faire une pause seulement terminé par le timer ou le clavier ?

Répondre à le.schtroumpf.jedi

2

samounet, le 24 sep 2001 à 09:17:32

G une otre solution... mais ca marche en VB, je sais po pour delphi

l idee c de faire

tant que faux
Doevents <---- ca veut dire que ca permet a d autre evenements de s executer
fintq

et en fait quand tu a une frappe au clavier, ou ton timer qui se declenche, tu metsq ton booleen a vrai

si tu oublies le doevents, ton prog va boucler sans fin.... mais je connais po l equivalent de DoEvents en delphi, mais ca doit bien exister

Répondre à samounet

4

le.schtroumpf.jedi, le 24 sep 2001 à 11:39:09

J'ai essayé cette solution, mais le problème est que m^me qd le booléen est mis à vrai la boucle n'est pas terminée.

PS : en Delphi c'est ProcessMessage.

Répondre à le.schtroumpf.jedi

5

samounet, le 24 sep 2001 à 11:44:17

Ben ca m etonnes assez, parce que si tu fais un bete

tant que faux
blahblah
fintq

des que ton booleen passe a vrai il doit sortir du tant que...$

t sur qu il y a pas une couille o nivo de tes noms de variables, quelle sont bien declarees en global... tout ca ?

Répondre à samounet

6

le.schtroumpf.jedi, le 24 sep 2001 à 21:26:30

Tout est ok.

Excue moi, mais tu es sûr de ton coup, moi ça marche toujours pas.

Répondre à le.schtroumpf.jedi

7

samounet, le 25 sep 2001 à 09:26:08

Chez moi ca marche

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;


var
Form1: TForm1;
test : Boolean;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
test :=false;
while not test do
application.ProcessMessages ;
edit1.Text:='pouet';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
test :=true;
end;

end.

Répondre à samounet

8

 nobody, le 27 aoû 2007 à 10:20:01

Procedure TForm1.Button1Click(Sender: TObject);
begin
test :=false;
while not test do
application.ProcessMessages ;
edit1.Text:='pouet'; <------là tu ralentis lexécution de ton programme inutilement en définissant indéfiniment la valeur de ton contrôle
end;

il vaut mieux :


procedure TForm1.Button1Click(Sender: TObject);
begin
test :=false;
edit1.Text:='pouet';
while not test do
application.ProcessMessages ;
end;

Répondre à nobody
Collection CommentÇaMarche.net