Главная страница
    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-42707
Diver
2002-01-18 12:37
2002.02.14
блокировка таблиц Paradox


1-42795
Tomvitas
2002-01-30 23:47
2002.02.14
Как в TStringGrid програмно перенести Selection с одной строки в другую?


1-42759
kronprince
2002-01-30 20:51
2002.02.14
Затенение окна как при Start > Shut Down..


1-42798
Petrovich
2002-01-31 21:49
2002.02.14
Проблема с формами


1-42747
perov
2002-01-30 09:48
2002.02.14
работа с объектами в TStringList





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский