Hola DarkDudae.
Desconozco la funcionalidad del código, pero enviándole los mismos valores como argumentos, de este modo obtengo resultados idénticos en C++ Builder y Delphi:
Código Delphi
[-]
function crc8(ptr: array of Byte; length: Word): Byte;
var
i,n,datum : Word;
merker: Byte;
begin
Result:= 0;
for i:= Low(ptr) to High(ptr) do
begin
datum := ptr[i];
Result:= Result xor datum;
for n:= 0 to 7 do
begin
merker:= Integer(Boolean(Result and 1));
Result:= Result shr 1;
if Boolean(merker) then
Result:= Result xor $92;
end;
end;
end;
Código Delphi
[-]
function crc16(ptr: array of Byte; length: Word): Word;
var
i, n, j, datum : Word;
highbyte, lowbyte, merker: Byte;
begin
Result:= 0;
j:= 0;
for i:= 0 to (length shr 1)-1 do
begin
highbyte:= ptr[j];
Inc(j, SizeOf(Byte));
lowbyte := ptr[j];
Inc(j, SizeOf(Byte));
datum := highbyte;
datum := datum shl 8;
datum := datum or lowbyte;
Result := Result xor datum;
for n:= 0 to 15 do
begin
merker:= Result and 1;
Result:= Result shr 1;
if Boolean(merker) then
Result:= Result xor $8408;
end;
end;
end;
Proba las funciones y me comentas.
Saludos
Edito: Donde dije "Desconozco la funcionalidad" quise decir que desconozco si el código original funciona, disculpas por la redacción