Incrémentation/décrémentation

Résolu
scecim Messages postés 7 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 19 décembre 2006 - 9 déc. 2006 à 12:57
scecim Messages postés 7 Date d'inscription lundi 6 décembre 2004 Statut Membre 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

2 réponses

scecim Messages postés 7 Date d'inscription lundi 6 décembre 2004 Statut Membre Dernière intervention 19 décembre 2006
19 déc. 2006 à 12:08
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+
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 déc. 2006 à 17:32
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.


@+
-1
Rejoignez-nous