Pause du programme [Résolu]

Signaler
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
-
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
-
Bonjour,
est ce qu'il existerais une procedure ou fonction qui demande au programme d'interrompre la procedure en cours jusqu'a que l'utilisateur appuye sur un bouton.

toutes les reponses sont les bienvenues !
Merci d'avance.

Ps aux webmasters : on ne peut pas mettre de code dans une question.

Si tu ne te plantes pas ......
tu ne poussera jamais

4 réponses

Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
On pourrait sortir de la boucle, noter la valeur, et revenir dans la boucle en partant de cette valeur ?

Petit exemple simpliste et amusant (enfin, je trouve...):

- 1 Form,
- 1 Label,
- 1 Button.

var
  Form1: TForm1;
  var Mini: Integer;
  Stop: Boolean;

implementation

{$R *.DFM}

procedure LanceBoucle;
var i: Integer;
    Maxi: Integer;
begin
  Maxi := 50000;
  for i := Mini to Maxi do
  begin
    if not Stop then
    begin
      Form1.Label1.Caption := IntToStr(i);
      Application.ProcessMessages;
    end
    else
    begin
      Mini := i;
      Exit;
    end;
  end;
  Mini := 0;
  Stop := True;
  Form1.Label1.Caption := '0';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Stop := not Stop;
  if not Stop then
    LanceBoucle;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Mini := 0;
  Stop := True;
end;


La boucle est arrêtée quand Stop est True, et repart quand Stop est False, depuis la valeur Mini stockée au moment où l'on avait quitté...

Bonne prog' :-p
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
Il n'y a pas de reponse a une maivaise question....
Donc je presise:

Ce que je voudrais, c'est avoir une boucle for dans laquelle , a un moment de la boucle , la procedure attends jusqu'a que l'utilisateur appuye sur un bouton de la fiche.

Il n'est pas question ici de mettre Sleep(xxx) ni
var
  Temps: Cardinal;
begin
  Temps:= GetTickCount;
  repeat
    Application.ProcessMessages;
  until Cardinal(GetTickCount - Temps) > xxx
end;


Merci d'avance

Ps aux webmasters : on ne peut pas mettre de code dans une question.

Si tu ne te plantes pas ......
tu ne poussera jamais
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
Super ca me va.
Comment a tu fait pour trouver ? :question)
Heureusement qu'il y a des têtes sur ce forum. :clown)
Merci a toi Japee.

Ps aux webmasters : on ne peut pas mettre de code dans une question.

Si tu ne te plantes pas ......
tu ne poussera jamais
Messages postés
1725
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
11 avril 2021
8
Bah, tu as capté ce que je voulais dire...
Alors, si je suis une tête, tu en es une autre, florenth :approve)
Sinon, arrête, j'ai les chevilles qui vont enfler, j'arrive déjà plus trop à entrer dans mes "shoes"... :big)
Ce qui me plait, dans la prog', c'est que, justement, tu as un problème, tu vas forcément arriver à le résoudre, ce n'est qu'une question de temps, c'est pas toujours aussi évident dans la vie %-6
Content de t'avoir dépanné, à charge de revanche... a + 8-)