| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > расчет CRC(контрольной суммы) для Record |
| Автор: Flashboy 24.3.2011, 14:14 | ||
| Суть задачи в том что существует массив записей, необходимо посчитать контрольную сумму(CRC32 к примеру) каждой записи и записать в отдельный массив. В моем случае проблема выходит такая, что при расчете совершенно одинаковых записей(по значению) CRC32 хэш получается разный.
Каким образом верно рассчитать контрольную сумму CRC32 для Record, может быть кто-то сталкивался? GetCRC32() использовался различный, возможно неверно. |
| Автор: cat512 24.3.2011, 16:46 |
| Ну проверить то просто! Если GetCrc32 возвращает разный хэш от константной строки, то значит проблема в GetCrc32, если нет то проблшема с реализацией алгоритма Добавлено @ 16:55 На сколько я помню в Crc32 хэш 4-х байтный, и входной параметр буфера должен быть 4-х байтный. А у тебя запись более 16 байт. Далее, в записи у тебя параметр указатель на строку, который при каждом перераспределении памяти будет иметь разное значение! поэтому у тебя и Хэш разный Добавлено @ 16:59 Замени Name: string и hash: string, на array [0..MaxValue] of char; В этом варианте, память расходуется не эффективно, но зато работать будет корректно! |
| Автор: Flashboy 24.3.2011, 17:01 | ||
| Проблема оказалось вот в чем: 1. Структура содержала Constructor 2. элемент структуры Name: String; - строка неопределенной величины. После таких изменений все заработало:
|
| Автор: Flashboy 24.3.2011, 17:29 |
| cat512, спасибо. Сам пришел к тому же только другим путем. |
| Автор: cat512 24.3.2011, 17:39 |
| Cheers! |