Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 17:36   #1
GurAnvir
Новичок
Джуниор
 
Регистрация: 14.11.2009
Сообщений: 2
По умолчанию Нужен компонент или библитека для вычисления cheksum файлов

Мне очень нужно найти GNU\GPL библитека \компонент на Delphi,который подсчитывает CRC 32 для файла. Сама прога,которую я делаю GNU\GPL
GurAnvir вне форума Ответить с цитированием
Старый 16.11.2009, 09:31   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Может этот модуль сгодится? Работает нормально.
Код:
unit psnCRC32;
{Копирайт (c) 2003 Сергей Парунов. Частичный копирайт (предок функции
CRC32Stream и пара идей) Андрей Рубин.

Подпрограммы вычисления CRC32 стандартным способом, применяющимся большинством
архиваторов и в Ethernet. Способ расчёта - обычный, побайтно. Для этого
инициализируется таблица размером 1 КБ.

Примечание для экспериментаторов: увеличивая таблицу до следующего значения
256 КБ (для обработки не по байту, а по слову), вы получите существенный
прирост скорости разве что на Xeon: очень важен кэш. Проверено: на PIII почти
не даёт прироста, а на старых модификациях (< Coppermine 256) даже отстаёт.}

interface

uses Classes;

{Вычисляет CRC32 блока Data размера Count.}
function CRC32Full(const Data; const Count: Cardinal): Cardinal;

implementation

var T: array [Byte] of Cardinal;

procedure CRC32Next(const Data; const Count: Cardinal; var CRC32: Cardinal);
var
	MyCRC32, I: Cardinal;
	PData: ^Byte;
begin
	PData:= @Data;
	MyCRC32:= CRC32; {в цикле - не var-переменная: так быстрее}
	for I:= 1 to Count do begin
		MyCRC32:= MyCRC32 shr 8 xor T[MyCRC32 and $FF xor PData^];
		Inc(PData);
	end;
	CRC32:= MyCRC32;
end;

function CRC32Full(const Data; const Count: Cardinal): Cardinal;
begin
	Result:= Cardinal(not 0);
	CRC32Next(Data, Count, Result);
	Result:= not Result;
end;

var I, D, J: Cardinal;
initialization {заполним таблицу значениями}
	for I:= 0 to 255 do begin
		D:= I;
		for J:= 1 to 8 do
			if Odd(D)
			then D:= D shr 1 xor $EDB88320 {образующий полином}
			else D:= D shr 1;
		T[I]:= D;
	end;
end.
Скандербег вне форума Ответить с цитированием
Старый 16.11.2009, 11:27   #3
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Думаю биб-ка Disk Controls Вам подойдет, а именно компонент TdcFileCRC

Описание:
Код:
Поддерживает три метода проверки: crc32 (наиболее часто используемый метод, используемый в таких программах, как ZIP, RAR, ARJ и т.д.), 
CRC16 (применительно к Протоколу XModem), CRCArc (используется SEA's "ARC" utility).

Последний раз редактировалось mihali4; 16.11.2009 в 13:17.
Noor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой компонент использовать для отображения файлов devi409 Компоненты Delphi 8 15.02.2009 14:50
Нужен компонент для закачки файла dimfil Компоненты Delphi 1 21.01.2009 13:00
Нужен компонент для чата Wicing Компоненты Delphi 3 24.03.2008 23:33
Нужен компонент для чата K@$K@ Компоненты Delphi 2 09.01.2008 15:23
Нужен компонент для работы с шрифтом и с БД Gauss Компоненты Delphi 1 07.01.2008 13:41