Incrémentation/décrémentation [Résolu]

Messages postés
7
Date d'inscription
lundi 6 décembre 2004
Dernière intervention
19 décembre 2006
- - Dernière réponse : scecim
Messages postés
7
Date d'inscription
lundi 6 décembre 2004
Dernière intervention
19 décembre 2006
- 19 déc. 2006 à 12:08
bonjour à tous:

Voilà mon problème:
partant d'une variable 'x' qui à pour valeur de départ '0', (sachant que cette variable est mise à jour dés qu'elle recoit l'information par le Réseau 'protocole  UDP'.)
'x' peut avoir pour valeur de '0 à +40' ou de '0 à -40'.
comment faire pour vérifier que 'x' est incrémenté de 1 ou décrémenté de 1, auquel cas un évenement sera déclenché, dans mon cas un Relais activé.
l'information arrive dans un Label que j'ai nommé [V0].

Ouverture Relais 1

-----------------------------------------------------


procedure TForm1.relais1On(Sender:TObject);
var
handle: longint;
Line: longint;
channel: longint;
begin
  
 handle:=9115264;
 Line:=1;
 channel:=0;


 if V0.Caption>floattostr(0) then
 QAPIExtWriteDO32(handle,channel,Line,0);
 if V0.Caption=floattostr(0) then
 Reset();
 end;


 //___________________________________________________________________________
 // Ouverture Relais2
procedure TForm1.relais2On(Sender: TObject);
var
handle: longint;
Line: longint;
channel: longint;


begin




 handle:=9115264;
 Line:=2;
 channel:=0;
 if V0.Caption<floattostr(0) then
 QAPIExtWriteDO32(handle,channel,Line,0);
 if V0.Caption=floattostr(0) then
 Reset();
 end;

J'ai essayé avec (inc) et (dec) :  For I:= 0 to 1 do
                                                if V0.caption inc(i) then
                                                 QAPIExtWriteDO32(handle,channel,Line,0)
Rien à faire ,rien ne fonctionne,

merci à qui pourra m'aider
Afficher la suite 

Votre réponse

2 réponses

Messages postés
7
Date d'inscription
lundi 6 décembre 2004
Dernière intervention
19 décembre 2006
0
Merci
bonjour rt15,

effectivement, en déposant un nouveau label dans ma fiche et un timer, j'ai fait en sorte que label.caption prenne la valeur de mon premier label avec 1 seconde de décalage ce qui me permet de pouvoir comparer les deux.
A la place de mes relais , j'ai mis en place deux composant Edit qui change de couleur  pour simuler l'allumage ou l'extinction des relais.

voila ce que ça donne:

procedure TForm1.changeC3(Sender: TObject);
begin
 C3.Caption:=pitchlabel.Caption;
 


 end;

if index=17 then begin
      pitchlabel.caption:=floattostrF(V[0],ffFixed,6,0);
      rolllabel.caption:=floattostrF(V[1],ffFixed,6,2);

    if strtofloat(C3.Caption)< strtofloat(pitchlabel.Caption) then
      Edit1.Color:=clRed
      else  Edit1.Color:=clgreen;


 


     if strtofloat(C3.Caption)> strtofloat(pitchlabel.Caption) then
       Edit2.Color:=clRed
       else
        Edit2.Color:=clGreen;




    end;

me reste à transposer tout ça pour mes relais!

Merci!
A+
Commenter la réponse de scecim
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Dernière intervention
7 novembre 2014
-1
Merci
Salut,


J'ai pas tout compris, et je dois pas être le seul, m'enfin...


Il y a certainement un meilleur moyen, m'enfin en voilà un ou deux :


1

Tu peux utiliser l'évènement OnChange du label, si y en a un. Tu peux
par exemple utiliser une variable dans ta fiche et comparé à la
nouvelle valeur du label à chaque changement.


2

Si y a pas de OnChange pour les labels, tu peux utiliser un timer qui vérifie périodiquement les changement de valeur du label.


dec et inc décrémentent et incrémentent. Ils ne permettent pas de savoir si ça à été fait.


@+
Commenter la réponse de cs_rt15

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.