Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3285 connectés 

 


Dernière réponse
Sujet : Arret d'une boucle en delphi ...
DELL's Ben justement c'est ce qu'il me falait car j'avais bien réussi à mettre pour que ça s'arrete mais l'acquisition continuait encore mais je vais essayer ça sinon merci  :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
DELL's Ben justement c'est ce qu'il me falait car j'avais bien réussi à mettre pour que ça s'arrete mais l'acquisition continuait encore mais je vais essayer ça sinon merci  :)
Amadeus La solution proposee par endi, antp, zcool et les autres est non seulement la bonne solution mais la seule : lorsque t'entre ds une boucle et que tu veux en sortir par une action exterieure (click sur un bouton ou autre) il faut de tps en temps donner la main par un ProcessMessage, modifier une var booleenne ds un OnClick par ex at au retour du ProcessMessage verifer cette var et sortir si elle est fausse.
voila.
Zero Cool Dans le OnClick de ta form, tu mets ton boolean à True:
 
procedure TForm1.FormClick(Sender: TObject);
begin
  Stop := True;
end;
 
et dans ta boucle, tu peux faire comme ça :
 
while (i < nb_boucles) do
  begin
    Application.ProcessMessages;
    Inc(i);
    if (Stop) then
      Break;
  end;
 
ou comme ça, moins bourrin :
 
while ((i < nb_boucles) and not(Stop)) do
  begin
    Application.ProcessMessages;
    Inc(i);
  end;

 

[edit]--Message édité par Zero Cool--[/edit]

DELL's Mhhh je comprend vos réponse et pas en faite ce que je comprend pas c'est que pour arreter une boucle il n'existe pas de procédure ou de fonctions bien spécifique pour arreter une boucle ? non ?  
 
C'est pas possible par exemple de creer (comme en html) une encre je m'explique dans la procédure tform1.onclick on met le non de l'encre qui lorsqu'on clique n'impote où sur form1 l'appele et vu que celle ci serait après le boucle ne la ferait plus justement ? je rêve là non ?
antp il faut aussi que de temps en temps tu traites les messages (clavier, souris, etc...)
par ex :

Code :
  1. if i mod 50 = 0 then application.processmessages;


ici toutes les 50 lignes il traite les messages.
évidemment l'intervalle des processmessages dépend de la durée d'un passage dans la boucle.

End-i voilà le principe (..en C):
 
int i = 0
bool termine = false
 
while ( (i < = 1000) && (!termine) )
{
 
}
 
quand tu click sur le bouton annuler ou qqchose comme ca pour arreter ca met simplement:
termine = true
DELL's Et ben il va chercher des données sur le port centros et les affiches dans une listbox et il fait l'acquisition quand une ligne vaut 0 ou 1 (acquisition période mais ça c'est juste à titre informatif)
darkoli c'est quoi que tu appelles une acquisition ? car si ton application n'a pas la main pendant qu'elle travaille (utilisation d'un thread) l'evenement de la souris sera ignoré).
DELL's Oui donc voilà j'ai un programme qui lance une acquisition (nombre d'acquisition choisi par l'utilisateur jusqu'à 1000) mais voilà disont qu'il ne veut plus en faire 1000 trop long et il veut arreter maintenant comment on fait pour faire ça donc arreter une boucle ?
 
Cela doit ce faire lorsqu'on clique avec la souris sur form1 (donc partout) .

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)