Bonjour

Voilà, j'aimerais fabriquer (c'est un bien grand mot ) une fonction delay mais, comparée à celle existante, la mienne devra s'arrêter quand une expression sera vraie.

En résumé pour résumer c'est un delay mais qui s'arrête si l'expression est vraie (à vrai dire c'est surtout pour keypressed);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
program test;
 
uses crt;
 
procedure cdelay(t : integer; exp : boolean);  {t = temps du delay, exp : l'expression}
 
var
  i : integer;
 
begin
  for i := 1 to t do begin
    delay(1);
    if (exp=true) then break; {c'est cette ligne qui ne fonctionne pas}
  end;
end;
 
begin
  cdelay(5000,keypressed);
  write('ok');
end.
et aussi le deuxième problème c'est que le temps d'attente n'est plus du tout le même, quand je mets 5000 dans t, c'est-à-dire 5 secondes, le temps réel est de 8 secondes.

Merci d'avance.