Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#25

AW: MD5-Prüfroutine für Delphi 10.2

  Alt 29. Nov 2017, 09:43
Zitat:
Deine Lösung mag zwar schneller sein, aber selbst mit der simplen eingebauten Prozedur MD5File aus md5.pas Lösung mit max. 64 KB Buffer hat man keine wesentlichen Geschwindingkeitseinbußen:
Hier muss ich nur fragen, wie man MD5File verwendet? Es gibt ja keinen Rückgabewert.
Delphi-Quellcode:
procedure MD5File(const fname: Str255; var Digest: TMD5Digest; var buf; bsize: word; var Err: word);
{-MD5 of file, buf: buffer with at least bsize bytes}
Und als Kommentar in Hash.HashFile: {-Calculate hash digest of file, buf: buffer with at least bsize bytes}

Das Ergebnis Digest ist ein Var-Parameter! Außerdem hast Du noch einen Error-Code Err, falls ein Fehler auftritt.

Was willst Du mehr?

Edit: Hier das ganze als Komplett-Programm (diesmal mit 32KB-Puffer)
Delphi-Quellcode:
{$Apptype console}
uses
  hash, md5, mem_util;
const
  BSIZE = $8000;
var
  buf: array[0..BSIZE-1] of byte;
  Digest: TMD5Digest;
  Err: word;
begin
  if paramcount>0 then begin
    MD5File(paramstr(1),Digest, buf, sizeof(buf), Err);
    if Err<>0 then writeln('Error ', Err)
    else writeln('MD5 = ', HexStr(@Digest, sizeof(Digest)));
  end
  else writeln('Usage: MD5F <file>');
end.
und noch mal das 512MB-Testfile
Code:
D:\Work\CRC_HASH>timethis md5f.exe 512MB_A

TimeThis : Command Line : md5f.exe 512MB_A
TimeThis :   Start Time : Wed Nov 29 10:15:22 2017

MD5 = 31e4d9c6d74cd592b78f77f72965d6ab

TimeThis : Command Line : md5f.exe 512MB_A
TimeThis :   Start Time : Wed Nov 29 10:15:22 2017
TimeThis :     End Time : Wed Nov 29 10:15:24 2017
TimeThis : Elapsed Time : 00:00:02.610

Geändert von gammatester (29. Nov 2017 um 10:19 Uhr) Grund: Beispiel
  Mit Zitat antworten Zitat