Тема: расчет CRC16
Показать сообщение отдельно
  #6  
Старый 28.06.2010, 17:02
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

У меня логичный вопрос: Вы в поле "Edt3" вводите значение в каком виде? HEX? Тогда вам надо считывать из Edit по ДВА символа и переводить их в байты, а не просто преобразовывать...

Код:
Procedure TForm1.btn1Click(Sender: TObject);
Var
  crc: Word;
  i: Integer;
  b: Byte;
Begin
  If edt3.text = '' Then // Лишняя функция Length была
    ShowMessage('Поле данных пусто');
  Else Begin // Если поле данных было не пусто - продолжаем
    crc := $FFFF; // crc := 0; ?
    i := 1;
    While i<Length(edt3.Text) Do Begin
      b := StrToInt('$' + edt3.Text[i] + edt3.Text[i + 1]); // Преобразуем 2 символа в байт
      crc := crc16(b, crc);
      inc(i, 2); // Смещаем позицию на 2 символа
    End;
  End;
  edt2.Text := IntToHex(crc, 0);
End;
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием