Bonjour voici un début de traduction. J'ai pas testé mais il ne fau pas oubliais de déclarer la fonction dans les déclarations, soit publiques, soit privées..
function crc(uiCount : integer, *pucDat : char) : integer; begin iTmp : integer; uiTmp,uiTmp1,uiVal : integer;
pucTmpDat : char; //ceci est un pointeurif (uiCount < 2) return 0; // response value is "0" for none or one data bytepucTmpDat = pucDat; uiTmp1 = *pucTmpDat++; uiTmp1 = (uiTmp1<<8) + *pucTmpDat++; if (uiCount == 2) return uiTmp1; // response value is CRC for two data bytes for (iTmp=(int)(uiCount>>1);iTmp>0;iTmp--) begin if (iTmp>1) beginuiVal = *pucTmpDat++; uiVal= (uiVal<<8) + *pucTmpDat++; end else begin if (uiCount&1) // odd number of data bytes, complete with "0" begin uiVal = *pucTmpDat; uiVal= (uiVal<<8); end else begin uiVal=0; //letzte Werte mit 0 end;end; for (uiTmp=0;uiTmp<16;uiTmp++) begin if (uiTmp1 & 0x8000) begin uiTmp1 <<= 1; if (uiVal & 0x8000)uiTmp1++; uiTmp1 ^= POLYNOM; end else begin uiTmp1 <<= 1; if (uiVal & 0x8000) uiTmp1++; end; uiVal <<= 1; end; end; return uiTmp1 ; end;