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

 


Dernière réponse
Sujet : Comment casser l'éxécution d'une boucle en C++ ?
faldornfamily sous delphi tu résous ce problème en insérant dans ta boucle un application.processmessages, sous builder cela doit etre application->processmessages.

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
faldornfamily sous delphi tu résous ce problème en insérant dans ta boucle un application.processmessages, sous builder cela doit etre application->processmessages.
MiniCooler pour l'avoir essayé, le sleep(0); n'arrange rien; il te faut soit couper ton prog en 2 thread, soit ajouter un bout de code dans ta boucle permettant à ton appli de répondre aux messages (genre click de souris)
 
ce bout de code ressemble à ceci :
 
// Read all of the messages in this next loop,  
// removing each message as we read it.
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))  
{  
    // Dispatch the message.
    DispatchMessage(&msg);
} // End of PeekMessage while loop.
WiseTechi Salut,
 
tu peux essayer d'ajouter un Sleep(0) (ou équivalent) dans ta boucle, histoire de redonner un peu la main à ton autre thread qui gère les événements du genre clic de souris etc....
Ca produit à peu près le même effet qu'un yield() en java
 
A++
MiniCooler c'est normal, tu prog (et donc le thread principal) reste bloqué dans l'éxécution de ta boucle et il ne peux plus réagir aux actions de l'utilisateur; tes clicks de souris ne pourront être pris en compte que lorsque tu sortira de cette boucle ...
LMF voici super résumé mon code ;
 
int a;
a=0;
while (CheckBox1->Checked==true)
{a=a+1;
Canvas->TextOut(100,10,FloatToStr(a));
// histoire de remplir la boucle, en realité, mon code éffectue un tri mais peut importe, c'est pas de la que vient le probleme.
};
 
Bilan => une fois lancé on peut plus décocher et donc plus arreter la boucle.
BENB

LMF a écrit a écrit :

si durant l'éxécution , je la vois toujours mais je clique dessus, ca fait rien ! :fou:




Ce qui est normal non ?
 
Je ne comprend pas le Probleme.
Il n'y a qu'un thread, comment prend-t-il en compte la valeur du controle ?
 
C'est vrai que avec un bout de code ce serait peut-etre plus simple.
 
Il ne faut pas croire a la magie.  
A quoi sert ta boucle ?

LMF si durant l'éxécution , je la vois toujours mais je clique dessus, ca fait rien ! :fou:
Combi_A_Vendre Le goto est particulièrement crade car tu ne dépileras jamais l'adresse d'entrée dans la boucle.
 
vw
slaanesh bah pkoi tu peux plus décocher la checkbox ??? t'as plus accès à l'objet représentant ta checkbox ???
LMF j'ai juste un petit probleme : Pour arreter et lancer  la boucle, j'ai fait une checkbox mais le probleme est qu'une fois la boucle lancéé, je peux plus décocher la chekbox et donc je peux plus l'arreter!
verdy_p Dans le même genre, les boucles Pascaliennes:
#define REPEAT         do {
#define UNTIL(cond)    } while(!(cond))
BifaceMcLeOD Cybermds> Non pas en C++. Mais on peut la simuler. En définissant la macro suivante:
    #define EXIT_WHEN(condition)  if (condition) break
on peut ensuite écrire dans sa boucle:
    EXIT_WHEN(ma-condition-de-sortie-est-vérifiée);
cybermds l'instruction last; marche t'elle???
 
last if(condition);
End-i tout simplement:
 
while (!fini)
{
  instructions
}
 
 ;)
 
où "fini" est un bool

 

[edit]--Message édité par End-i--[/edit]

darkoli y'a aussi return c'est un peu viloent comme interruption de boucle mais bon ... (attention, ca arrete aussi la fonction ou se trouve la boucle).
 
Sinon il y 'a :
  char* toto=(char*)NULL;
  *toto=0;
LMF en effet, c'est tout bete :ouch:
JWhy :lol:
 
c'est rien, c'est juste ta condition pour savoir si tu dois sortir de ta boucle !
LMF Je comprend que moyennement, que signifie "tameré ?
bjone break, ou un bool qui contrôle
bah le bon vieux goto...
for/while
{
if( tamer )
  break; ou goto tchao;
}
 
tchao: ; /// si goto  
 
peut être utile, mais les profs détestent ;) mdr
 
c toi qui voit
wouatouwouatou koi ??!! ca marche plus le bon vieux break ?? ou c t ptetre exit... hmmm... c le week-end et mon neurone est déjà parti :D
verdoux break ?
LMF Comment casser l'éxécution d'une boucle en C++ (Borland C++ builder 5) ? SVP

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