Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > помогите перевести код с С на делфи


Автор: vasea 30.3.2006, 15:21
void CRC_16_R(unsigned short usDataLen)

{

unsigned char n ;

unsigned char h ;

CRC_Read_HB = 0xFF ;

CRC_Read_LB = 0xFF ;

for(n = 0; n < usDataLen; n = n + 1)

{

CRC_Read_LB = CRC_Read_LB ^ inbuf[n] ;

for(h = 0; h < 8; h = h + 1)

{

if((CRC_Read_LB & 0x001) == 0)

{

CRC_Read_LB = CRC_Read_LB>>1;

if((CRC_Read_HB & 0x001) != 0)

CRC_Read_LB = CRC_Read_LB | 0x080;

CRC_Read_HB = CRC_Read_HB>>1;

}

else

{

CRC_Read_LB = CRC_Read_LB>>1;

if((CRC_Read_HB & 0x001) != 0)

CRC_Read_LB = CRC_Read_LB | 0x080;

CRC_Read_HB = CRC_Read_HB>>1;

CRC_Read_HB = CRC_Read_HB ^ 0x0A0 ;

CRC_Read_LB = CRC_Read_LB ^ 0x001 ;

}

}

}

return;

}
етот код мне надо перевести на делфи
а я не шарю в делфи помогите пожалуйста

Автор: Alexeis 30.3.2006, 15:29
vasea, нужно пользоваться кнопочкой код для приведения кода в читабельный вид

Автор: vasea 30.3.2006, 15:39
не знал!!!
Добавлено @ 15:39
Код

void CRC_16_R(unsigned short usDataLen)                                      
{                                                                          
    unsigned char n ;                                                  
    unsigned char h ;                                                     
    CRC_Read_HB = 0xFF ;                                           
    CRC_Read_LB = 0xFF ;                                             
    for(n = 0; n < usDataLen; n = n + 1)                                   
     {                                                                     
      CRC_Read_LB = CRC_Read_LB ^ inbuf[n] ;                          
      for(h = 0; h < 8; h = h + 1)                                           
       {                                                                      
        if((CRC_Read_LB & 0x001) == 0)                                       
         {                                                                  
          CRC_Read_LB = CRC_Read_LB>>1;                                    
          if((CRC_Read_HB & 0x001) != 0)                                    
           CRC_Read_LB = CRC_Read_LB | 0x080;                                
          CRC_Read_HB = CRC_Read_HB>>1;                                       
         }                                                                   
        else                                                                 
         {                                                                   
          CRC_Read_LB = CRC_Read_LB>>1;                                      
          if((CRC_Read_HB & 0x001) != 0)                                     
           CRC_Read_LB = CRC_Read_LB | 0x080;                                 
          CRC_Read_HB = CRC_Read_HB>>1;                                        
          CRC_Read_HB = CRC_Read_HB ^ 0x0A0 ;                                
          CRC_Read_LB = CRC_Read_LB ^ 0x001 ;                                
         }                                                                    
       }                                                                    
     }                                                                       
    return;                                                                   
}

Автор: Alexeis 30.3.2006, 15:45
Вроде вот так
на сколько мне позволяют знания в С++
Код

var
  CRC_Read_HB : Word = $FF;
  CRC_Read_LB : Word = $FF;

procedure CRC_16_R(usDataLen : Word);
var
  n, h : byte;
Begin
  for n := 0 to usDataLen - 1
  do
    Begin
      if(CRC_Read_LB and $001) = 0
      then
        Begin
          CRC_Read_LB := CRC_Read_LB shr 1;
          if (CRC_Read_HB and $001) <> 0
          then
           CRC_Read_LB := CRC_Read_LB or $080;

          CRC_Read_HB := CRC_Read_HB shr 1;
        end
      else
       Begin
         CRC_Read_LB := CRC_Read_LB shr 1;

          if(CRC_Read_HB and $001) <> 0
          then
          CRC_Read_LB := CRC_Read_LB or $080;

          CRC_Read_HB := CRC_Read_HB shr 1; 
          CRC_Read_HB := CRC_Read_HB XOR $0A0 ;
          CRC_Read_LB := CRC_Read_LB XOR $001 ;    
       end;
    end;
end;


Добавлено @ 15:48
>> сдвиг влево или вправо?

Автор: Yanis 31.3.2006, 07:42
Цитата(alexeis1 @ 30.3.2006, 15:45 Найти цитируемый пост)
>> сдвиг влево или вправо?

А по логике вещей не догадываешься? Вправо smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)