FoxPro/Visual FoxPro - calcular sys(2007)

 
Vista:

calcular sys(2007)

Publicado por pilastron (11 intervenciones) el 17/05/2005 15:43:55
Me gustaria saber como se hace en Foxpro para averiguar una suma de comprobación de sys(2007). Ejemplo, si quiero saber el valor de
sys(2007,"dimequevalortengoahora").

Dónde y cómo hacerlo. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:calcular sys(2007)

Publicado por David Amador T. (520 intervenciones) el 18/05/2005 12:49:02
Puedes revisar esta función

lcStr = "Cadena a comprobar"
?CheckSum(-1, lcStr, "16")
?Sys(2007, lcStr)

Function CheckSum (lnStartVal, lcBlockTxt, lcBitLen)
Do Case
Case Pcount() < 2
Wait Window "Se requieren parametros adicionales."
Return
Case Pcount() < 3
lcBitLen = "16"
Endcase
Dimension laPower[8]
Private lnCRC, lnPower, TestBit
lnBitLen = Iif(lcBitLen="32",32773,4129)

For lnPower = 1 To 8
laPower[lnPower] = 2^(lnPower-1)
Next lnPower

lnCRC = lnStartVal
For OutLoop = 1 To Len(lcBlockTxt)
ByteVal = Asc(Substr(lcBlockTxt, OutLoop, 1))
For InLoop = 8 To 1 Step - 1
TestBit = ((Bitand(lnCRC,32768) = 32768) And Not (Bitand(ByteVal, laPower(InLoop)) = laPower(InLoop))) Or;
(!(Bitand(lnCRC,32768) = 32768) And (Bitand(ByteVal, laPower(InLoop)) = laPower(InLoop)))
lnCRC = Bitand(lnCRC,32767)*2
If TestBit
lnCRC = Bitxor(lnCRC,lnBitLen)
Endif
Next InLoop
Next OutLoop
Return lnCRC && Return the Word Value

Function Xd0bit
Parameter Bitno, A
Private Remainder, I, Highord
Highord = Int(Iif(A>1,Log(A)*1.442695041,0))
If Bitno>Highord
Return .F.
Endif
For I = 0 To Highord
If I=Bitno
Return Iif(Iif(A=1,1,Mod(A,2))=1,.T.,.F.)
Endif
If A=0
Return .F.
Endif
A = Int(A/2)
Next

David Amador Tapia
WebMaster "La Web de Davphantom"
www.davphantom.net
Cartagena. Colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:calcular sys(2007)

Publicado por pilastron (11 intervenciones) el 18/05/2005 13:09:35
Funciona perfectamente. Mil gracias desde Málaga. España.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar