Un CRC de 16 bits para nuestrs aplicaciones
[code]
//
// Nota: la variable Crc (pasada por referencia) es "acumulativa" y debe
// inicializarse en cero antes de usar el procedimiento
//
procedure UpdCrc16(CP: Byte; Var Crc: Word);
Var
Indice: Byte;
Valtable: Word;
Begin
Indice := Hi(Crc);
ValTable := Tabla_CRC[Indice];
Crc := ValTable Xor (Lo(Crc) Shl 8) Xor CP;
End;
//
// Calcular CRC de 16 bits a partir de una cadena ASC de cualquier longitud
//
Function Calcular_CRC(Cadena: String): Word;
Var
C: Byte;
CRC: Word; // Acumulador de CRC
Begin
CRC:=0; // Inicializar acumulador de CRC
For C:=1 To Length(Cadena) Do // Se modific�: 0 To ...
UpdCrc16(Byte(Cadena[C]),CRC);
Result:=CRC; // Devolver valor de CRC
End;
end.
[code]
|