Evénement pendant une boucle TANTQUE

Evénement pendant une boucle TANTQUE - Delphi/Pascal - Programmation

Marsh Posté le 22-11-2002 à 10:43:26    

Hello,
Donc j'ai ma boucle tantque, et j'aimerais attendre jusqu'à ce que l'événement CommPortDriver1ReceiveData s'execute.  
Mais ca ne marche pas, si je met cela, le programme tourne sur lui meme a l'infini. Pourtant lorsque CommPortDriver1ReceiveData s'execute, il devrait mettre FlagRcv à 1 et la boucle TANTQUE devrait sortir.
 
Alors si qqun sait comment faire :)
 
Merci  
Daniel
 
 
1.
Begin
  While FlagRcv = False Do Begin
 
  End;
  FlagRcv := False;
End;
 
 
2.
procedure TSend.CommPortDriver1ReceiveData(Sender: TObject;
  DataPtr: Pointer; DataSize: Integer);
var ....
    ....
begin
  ...
  ...
  ...
  FlagRcv := True;
end;

Reply

Marsh Posté le 22-11-2002 à 10:43:26   

Reply

Marsh Posté le 22-11-2002 à 10:46:27    

dans ton while, mets Application.HandleMessage ou Application.ProcessMessages (essaie avec les deux, le premier prend moins de CPU mais va peut-être réagir moins vite)
 
Mais c'est pas spécialement la manière la plus propre de procéder.


Message édité par antp le 22-11-2002 à 10:47:23

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-11-2002 à 11:01:06    

Merci ca ne plante plus, mais ca ne marche toujours pas correctement.

Reply

Marsh Posté le 22-11-2002 à 11:06:55    

comment ça "pas correctement" ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-11-2002 à 11:13:13    

Ben ca me fait exactement comme quand je met pas de boucle. j'ai verif 10x le code et pourtant c bien juste.

Reply

Marsh Posté le 22-11-2002 à 11:16:41    

tu veux dire qu'il n'attend pas ?
Tu as initialisé ta variable à False avant de rentrer dans la boucle ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 22-11-2002 à 11:21:26    

oui oui  :(

Reply

Marsh Posté le 22-11-2002 à 11:25:46    

si tu mets un breakpoint à l'endroit où tu assignes ta variable à True, il y passe avant de sortir de la boucle ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-11-2002 à 08:45:11    

je ne comprends pas pourquoi ca ne marche pas, qqun a un moyen plus propre de faire ca ?
 
Daniel

Reply

Marsh Posté le 27-11-2002 à 05:10:07    

Si, de pas faire de while et de ne faire ton traitement qu'à la fin de TSend.CommPortDriver1ReceiveData.  
 
Sinon, c'est un peu bourrin ton histoire de faire une boucle avec un Application.ProcessMessages en attendant que qqchose se passe, ca me fait penser à un mec qui a programmé du non evenementiel et qui essaie de commencer Delphi, je me trompe? ;)
Faut réfléchir autrement, tu dois réagir à un évènement, pas attendre qu'il se produise, c'est totalement différent.
 
Sinon si tu t'obstines dans ton truc, t'es sur que tu recois qqchose? :D


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed