Oppure

Loading
27/04/10 15:24
camaleonteplus
//controlla da 0 a 30
  numero_da_Controllare := StrToInt(Ren.Caption);
  numero := 30;
if numero_da_Controllare <= numero then
ALed1.Value := True;
//controlla da 31 a 60
numero_da_Controllare := StrToInt(Ren.Caption);
  numero := 31;
if numero_da_Controllare >= numero then
ALed2.Value := True;
//controlla da 61 a 100
numero_da_Controllare := StrToInt(Ren.Caption);
  numero := 61;
if numero_da_Controllare > numero then
ALed3.Value := True;
end;


il codice qui sopra:
da 0 a 30 mi accende un led verde che si spegne al valore 31.
da 31 a 60 un led giallo che dovrebbe spegnere al valore 61 (Ma non lo fa).
da 61 in poi uno rosso.
Adesso il problema è che quello giallo che dovrebbe avere un campo tra 31 a 60 non riesco a controllarlo perché anche quando supera il valore 60 resta acceso come devo impostare l'operazione?
Spero di essermi spiegato bene.
aaa
27/04/10 16:19
Poggi Marco
Ciao! Ho letto il tuo spezzone di progaamma.

Devo dire che è difficile contestualizzare il problema; ho i seguenti dubbi:

-> Il codice fa parte di una procedura di controllo? Se si postala per intero.

-> Quando attivi il controllo?
aaa
27/04/10 16:47
Perchè utilizzare la variabile numero (e in quel modo) dato che puoi scrivere i valori costanti nella if senza problemi?

In pseudocodice

if numero_da_controllare > 60 allora
   accendi ALed3
else
   if numero_da_controllare > 30 allora
      accendi ALed2
   else
      accendi ALed1
   end
end


Però con True accendi i Led, ma quando li spegni? Se non ho capito male, devi spegnere gli altri quando ne accendi uno ... quindi

if numero_da_controllare > 60 allora
    spegni ALed1   
    spegni ALed2
    accendi ALed3
else
   if numero_da_controllare > 30 allora
      spegni ALed1   
      accendi ALed2
      spegni ALed3
   else
      accendi ALed1
      spegni ALed2
      spegni ALed3
   end
end



Ultima modifica effettuata da 27/04/10 16:49
27/04/10 18:16
camaleonteplus
ALed1.Value := False;
  ALed2.Value := False;
  ALed3.Value := False;
  numero_da_Controllare := StrToInt(Ren.Caption);
//controlla da 0 a 30
if numero_da_Controllare <= 30 then
  ALed1.Value := True;
//controlla da 31 a 60
if numero_da_Controllare >= 31 then
  ALed2.Value := True;
//controlla da 61 a 100
if numero_da_Controllare > 61 then
  ALed2.Value := False;
if numero_da_Controllare > 61 then
  ALed3.Value := True;
end;


ho risolto in questo modo prendendo spunto dal tuo suggerimento.
aaa
27/04/10 19:06
Le ultime due if sono ripetute ... ottimizza il codice ...