Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];

Вниз

Контрольна сумма файла   Найти похожие ветки 

 
SP   (2002-01-31 11:53) [0]

Добрый день, коллеги! Возникла необходимость узнавать у файла его контрольную сумму. Файл может быть любого формата. Подскажите, каким образом это делается или какую информацию надо почитать для реализации этого.


 
Дмитрий Д.   (2002-01-31 13:12) [1]

лови готовый юнит, а конкретно принцип поищи в инете

unit Crc32fast;

interface

uses
Windows, classes
,Sysutils, Dialogs;

function FileCRC32fast(const FileName : String) : DWORD;
function UpdateCRC32(InitCRC : DWORD; BufPtr : Pointer; Len : Word) : LongInt;

implementation

type
CRCTable = array [0..255] of DWORD;

const
BufLen = 32768;

CRC32Table : CRCTable =
($00000000, $77073096, $ee0e612c, $990951ba,
$076dc419, $706af48f, $e963a535, $9e6495a3,
$0edb8832, $79dcb8a4, $e0d5e91e, $97d2d988,
$09b64c2b, $7eb17cbd, $e7b82d07, $90bf1d91,

$1db71064, $6ab020f2, $f3b97148, $84be41de,
$1adad47d, $6ddde4eb, $f4d4b551, $83d385c7,
$136c9856, $646ba8c0, $fd62f97a, $8a65c9ec,
$14015c4f, $63066cd9, $fa0f3d63, $8d080df5,

$3b6e20c8, $4c69105e, $d56041e4, $a2677172,
$3c03e4d1, $4b04d447, $d20d85fd, $a50ab56b,
$35b5a8fa, $42b2986c, $dbbbc9d6, $acbcf940,
$32d86ce3, $45df5c75, $dcd60dcf, $abd13d59,

$26d930ac, $51de003a, $c8d75180, $bfd06116,
$21b4f4b5, $56b3c423, $cfba9599, $b8bda50f,
$2802b89e, $5f058808, $c60cd9b2, $b10be924,
$2f6f7c87, $58684c11, $c1611dab, $b6662d3d,

$76dc4190, $01db7106, $98d220bc, $efd5102a,
$71b18589, $06b6b51f, $9fbfe4a5, $e8b8d433,
$7807c9a2, $0f00f934, $9609a88e, $e10e9818,
$7f6a0dbb, $086d3d2d, $91646c97, $e6635c01,

$6b6b51f4, $1c6c6162, $856530d8, $f262004e,
$6c0695ed, $1b01a57b, $8208f4c1, $f50fc457,
$65b0d9c6, $12b7e950, $8bbeb8ea, $fcb9887c,
$62dd1ddf, $15da2d49, $8cd37cf3, $fbd44c65,

$4db26158, $3ab551ce, $a3bc0074, $d4bb30e2,
$4adfa541, $3dd895d7, $a4d1c46d, $d3d6f4fb,
$4369e96a, $346ed9fc, $ad678846, $da60b8d0,
$44042d73, $33031de5, $aa0a4c5f, $dd0d7cc9,

$5005713c, $270241aa, $be0b1010, $c90c2086,
$5768b525, $206f85b3, $b966d409, $ce61e49f,
$5edef90e, $29d9c998, $b0d09822, $c7d7a8b4,
$59b33d17, $2eb40d81, $b7bd5c3b, $c0ba6cad,

$edb88320, $9abfb3b6, $03b6e20c, $74b1d29a,
$ead54739, $9dd277af, $04db2615, $73dc1683,
$e3630b12, $94643b84, $0d6d6a3e, $7a6a5aa8,
$e40ecf0b, $9309ff9d, $0a00ae27, $7d079eb1,

$f00f9344, $8708a3d2, $1e01f268, $6906c2fe,
$f762575d, $806567cb, $196c3671, $6e6b06e7,
$fed41b76, $89d32be0, $10da7a5a, $67dd4acc,
$f9b9df6f, $8ebeeff9, $17b7be43, $60b08ed5,

$d6d6a3e8, $a1d1937e, $38d8c2c4, $04fdff252,
$d1bb67f1, $a6bc5767, $3fb506dd, $048b2364b,
$d80d2bda, $af0a1b4c, $36034af6, $041047a60,
$df60efc3, $a867df55, $316e8eef, $04669be79,

$cb61b38c, $bc66831a, $256fd2a0, $5268e236,
$cc0c7795, $bb0b4703, $220216b9, $5505262f,
$c5ba3bbe, $b2bd0b28, $2bb45a92, $5cb36a04,
$c2d7ffa7, $b5d0cf31, $2cd99e8b, $5bdeae1d,

$9b64c2b0, $ec63f226, $756aa39c, $026d930a,
$9c0906a9, $eb0e363f, $72076785, $05005713,
$95bf4a82, $e2b87a14, $7bb12bae, $0cb61b38,
$92d28e9b, $e5d5be0d, $7cdcefb7, $0bdbdf21,

$86d3d2d4, $f1d4e242, $68ddb3f8, $1fda836e,
$81be16cd, $f6b9265b, $6fb077e1, $18b74777,
$88085ae6, $ff0f6a70, $66063bca, $11010b5c,
$8f659eff, $f862ae69, $616bffd3, $166ccf45,

$a00ae278, $d70dd2ee, $4e048354, $3903b3c2,
$a7672661, $d06016f7, $4969474d, $3e6e77db,
$aed16a4a, $d9d65adc, $40df0b66, $37d83bf0,
$a9bcae53, $debb9ec5, $47b2cf7f, $30b5ffe9,

$bdbdf21c, $cabac28a, $53b39330, $24b4a3a6,
$bad03605, $cdd70693, $54de5729, $23d967bf,
$b3667a2e, $c4614ab8, $5d681b02, $2a6f2b94,
$b40bbe37, $c30c8ea1, $5a05df1b, $2d02ef8d);

var
Buf : array [1..BufLen] of Byte;

function UpdateCRC32(InitCRC : DWORD; BufPtr : Pointer; Len : Word) : LongInt;
var
crc : DWORD;
index : Integer;
i : DWORD;
begin
crc := InitCRC;
for i:=0 to Len-1 do begin
index := (crc xor DWORD(Pointer(DWORD(BufPtr)+i)^)) and $000000FF;
crc := ((crc shr 8) and $00FFFFFF) xor CRC32Table[index];
end;
Result := crc;
end;

function FileCRC32fast(const FileName : String) : DWORD;
var
InFile : TFileStream;
crc32 : DWORD;
Res : Integer;
BufPtr : Pointer;
begin
BufPtr := @Buf;
InFile:=TFileStream.Create(FileName,fmShareDenyNone);
crc32 := $FFFFFFFF;
Res:=InFile.Read(Buf,BufLen);
While (Res <> 0) do
begin
crc32 := UpdateCrc32(crc32,BufPtr,Res);
Res:=InFile.Read(Buf,BufLen);
end;
InFile.Destroy;
Result := not crc32;
end;

end.



 
Slava   (2002-01-31 13:12) [2]

http://www.torry.net/vcl/vcltools/text/adqstrings.zip

Там есть функции CRC32 и т.д.


 
SP   (2002-01-31 16:32) [3]

Спасибо, ребята!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
3-42676
Georg
2002-01-18 13:27
2002.02.14
Построение индексов


1-42737
ctapik-net
2002-01-30 19:38
2002.02.14
Вот хочется узнать, как подключают контекстную справку с файлом chm?


3-42660
Voi
2002-01-18 21:29
2002.02.14
Вот ЗАДАЧА!!!


3-42704
IVL
2002-01-22 23:43
2002.02.14
Компоненты Interbase


3-42679
Jony
2002-01-22 09:36
2002.02.14
Числа с запятой в Insert и Update





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский