Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MD5 berechnet die Hashsumme vom Film viel zu lange... (https://www.delphipraxis.net/40333-md5-berechnet-die-hashsumme-vom-film-viel-zu-lange.html)

m0sch3r 14. Feb 2005 14:36


MD5 berechnet die Hashsumme vom Film viel zu lange...
 
Hi
ich benutze die md5 Unit von Dimka Maslov zum berechnen der MD5 Hashsummen, bei kleinen Dateien klappt es einwandfrei blos bei gröseren wie zum beispiel einem Film das friert das Programm ein und es dauert fast mehrere minuten bis es wider läuft.

Gibt es eine Möglichkeit das Problemm zu umgehen....!?

Chewie 14. Feb 2005 17:40

Re: MD5 berechnet die Hashsumme vom Film viel zu lange...
 
Bei großen Dateien dauert das eben so lange ;)
Lager die Berechnung in einen seperaten Thread aus, dann kannst du deine GUI immer noch bedienen.

m0sch3r 14. Feb 2005 22:15

Re: MD5 berechnet die Hashsumme vom Film viel zu lange...
 
wie machen das dann emule und co, ich glaube das es nicht nur mit einem separaten thread getan ist..

Tubos 14. Feb 2005 22:18

Re: MD5 berechnet die Hashsumme vom Film viel zu lange...
 
evt. haben die das Ganze effizienter programmiert.

m0sch3r 14. Feb 2005 22:33

Re: MD5 berechnet die Hashsumme vom Film viel zu lange...
 
Könnte sein obwohl die Unit von Herrn Maslov Dimka Maslov homepage
gute Kritik genießt..

Boombuler 15. Feb 2005 07:45

Re: MD5 berechnet die Hashsumme vom Film viel zu lange...
 
Ich schreib auch gerad n Programm in dem ich viele Hashses berechnen muss... hatte das gleiche Problem. Hab das mit nem Thread gelößt und das geht auch super...

Greetz
Boombuler

shmia 15. Feb 2005 08:01

Re: MD5 berechnet die Hashsumme vom Film viel zu lange...
 
Man könnte noch das Flag FILE_FLAG_SEQUENTIAL_SCAN angeben:
Delphi-Quellcode:
function MD5File(const FileName: string): TMD5Digest;
var
 F: THandleStream;
 Handle: HFILE;
begin
 Handle := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil,
  OPEN_EXISTING,
  FILE_ATTRIBUTE_NORMAL or FILE_FLAG_SEQUENTIAL_SCAN, // <===
  0);
 if Integer(Handle) < 0 then
   raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]);
Ob's was bringt muss man testen.

Chewie 15. Feb 2005 18:39

Re: MD5 berechnet die Hashsumme vom Film viel zu lange...
 
Zitat:

Zitat von m0sch3r
wie machen das dann emule und co, ich glaube das es nicht nur mit einem separaten thread getan ist..

Nein, bestimmt nicht ;) Emule & Co sind etwas komplexere Anwendungen, die weit mehr als nur 2 Threads parallel laufen haben. Klar ist, dass die Prüfsümmenberechnung (die im Übriegen ja "chunk"weise durchgeführt wird), sich nicht im gleichen Thread wie die GUI befindet. Wohl auch nicht im selben Thread wie der Datenempfang, da hierdurch ja eine Verzögerung auftreten würde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz