Convertion du c vers le pascal

Karine5 - 12 juil. 2015 à 00:31
schnawd Messages postés 20 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 12 juillet 2015 - 12 juil. 2015 à 09:03
Bonjour,
Comment peut ton convertir ce code en pascal je suis perdu aidez moi



#define POLYNOM 0x8005


unsigned int crc(unsigned int uiCount,unsigned char *pucDat)
{
short int iTmp;
unsigned short int uiTmp,uiTmp1,uiVal;
unsigned char *pucTmpDat;

if (uiCount < 2) return(0); // response value is "0" for none or one data byte
pucTmpDat = 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--)
{

if (iTmp>1)
{
uiVal = *pucTmpDat++;
uiVal= (uiVal<<8) + *pucTmpDat++;
}
else
{
if (uiCount&1) // odd number of data bytes, complete with "0"
{
uiVal = *pucTmpDat;
uiVal= (uiVal<<8);
}
else
{
uiVal=0; //letzte Werte mit 0
}
}

for (uiTmp=0;uiTmp<16;uiTmp++)
{
if (uiTmp1 & 0x8000)
{
uiTmp1 <<= 1;
if (uiVal & 0x8000)uiTmp1++;
uiTmp1 ^= POLYNOM;
}
else
{
uiTmp1 <<= 1;
if (uiVal & 0x8000)uiTmp1++;
}
uiVal <<= 1;
}
}
return(uiTmp1);
}


Merci pour votre aide gratieuse

1 réponse

schnawd Messages postés 20 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 12 juillet 2015
Modifié par schnawd le 12/07/2015 à 09:06
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;



$cHn4wD
0
Rejoignez-nous