Page 1 of 1

Funzione

PostPosted: 13 Apr 2014, 11:31
by suibaf
Ciao,

ho questa funzione che mi sembra anche rispondere bene, nel senso che mi dà il risultato desiderato. Ovviamente prima faccio la dichiarazione e poi la uso all'interno del prg.

Code: Select all
Declare Function Cecksum(byval Primo_elemento As Byte , Byval Ultimo_elemento As Byte) As Byte


Code: Select all
Function Cecksum(primo_elemento As Byte , Ultimo_elemento As Byte) As Byte

   Local Btempbyte As Byte
   Local J As Byte


   Btempbyte = Array_temp(primo_elemento) Xor Array_temp(primo_elemento + 1)
   Primo_elemento = Primo_elemento + 2


   For J = Primo_elemento To Ultimo_elemento

      Btempbyte = Array_temp(j) Xor Btempbyte

   Next

   Btempbyte = Btempbyte + 7

   Cecksum = Btempbyte

End Function


Il problema nasce quando devo usare questa funzione. Se scrivo:

Code: Select all
If Cecksum(8 , 11) = Ar(12) Then

la condizione non viene sodisfatta

se scrivo:

Code: Select all
      dim Test as byte
      Test = Cecksum(8 , 11)

      If test = Ar(12) Then ' dove test viene di


Così la condizione viene sodisfatta. Perchè?

Re: Funzione

PostPosted: 13 Apr 2014, 20:16
by deluca
Se inverti i termini nel confronto dell' IF, dovrebbe funzionare.
La variabile deve stare a sinistra e la funzione a destra, tutto qui:

Code: Select all
If Ar(12) = Cecksum(8 , 11) Then


questo "bugs", se così si può chiamare in questo caso, lo avevo già incontrato e l'avevo risolto in questo modo, invertendo i termini nel confronto.