-
> Xmen (15.12.2011 13:24:39) [39]
Как сказано, создавать файл с контрольной суммой, Свму сумму можно в название включить. В качестве КС лучше использовать хеш 64, будет более стандартно
-
function GetCheckSum(FileName: string): DWORD; var F: file of DWORD; P: Pointer; Fsize: DWORD; Buffer: array[0..500] of DWORD; begin FileMode := 0; AssignFile(F, FileName); Reset(F); Seek(F, FileSize(F) div 2); Fsize := FileSize(F) - 1 - FilePos(F); if Fsize > 500 then Fsize := 500; BlockRead(F, Buffer, Fsize); Close(F); P := @Buffer; asm xor eax, eax xor ecx, ecx mov edi , p @again: add eax, [edi + 4*ecx] inc ecx cmp ecx, fsize jl @again mov @result, eax end; end;
Использовал так: ShowMessage(IntToStr(GetCheckSum(path+'Send\'+f.Name)));
а как его в название включит ? у меня все файлы в формате 8.3. про хеш 64 инфы не нашел
-
почитал. http://www.delphimaster.net/view/15-1195018398/all>>Свму сумму можно в название включить. в название не могу написать потому что у меня название файла это шаблон например (ФФФФрнф.ффф ФФФФ - филиал получатель ф.ффф - филиал отправитель р - номер рейса (номер отправленного файла 0-9 a-z) н - номер дня (0-9 a-r)
-
> Xmen (16.12.2011 10:03:42) [42]
Не можешь, ни и не надо, придется считывать файлик. В FTP используется включения суммы в название, и ХЕШ в 64 байта, но это не важно, что бы с стандаром совпадало, главное, что бы свою роль выполняло и обнаруживало более одной ошибки передачи..
-
и забыл сказать у меня все файлы для отправки и приёма архивируется с помощью arj. Где то читал что есть у него свойство по работе с CRC. Можно как нибуд это использовать это в проге?
|