Ich schreibe ein Programm in Delphi 2010. Ein Teil des Programms befasst sich mit File Hashing, was bei großen Dateien ziemlich lange dauert. Das Problem, das ich habe, ist, dass das Programm, während es die vom Benutzer gewünschte Datei hasht, bei einer 100 MB großen Datei bis zu 60 Sekunden lang hängen bleibt. Ich möchte, dass der Benutzer in der Lage ist, die anderen Funktionen des Programms (Memopad, String Hashing) zu nutzen, während das File Hashing stattfindet.
Die derzeitige Struktur des Programms sieht wie folgt aus :-
- Benutzer initiiert Hashing (kann durch Änderung der ausgewählten Datei oder des ausgewählten Hashing-Algorithmus erfolgen)
- Ruft die Funktion CheckHashBox auf
- CheckHashBox prüft, ob der Hash-Algorithmus ausgewählt ist
- Wenn ausgewählt, ruft die entsprechende Funktion des Hash-Algorithmus auf
- Die Hashing-Algorithmus-Funktion puffert die Datei, durchläuft den Hashing-Algorithmus und gibt die endgültige Ausgabe im StringGrid aus.
- Wiederholen Sie die Schritte 3 - 5 für alle 12 Hash-Algorithmen.
Wie ich bereits sagte, kann dies bei großen Dateien bis zu 60 Sekunden dauern, insbesondere bei Whirlpool- und SHA-512-Algorithmen. Die andere seltsame Sache ist, dass, obwohl in den Code sollte es nach der Rückkehr für bestimmte Hashing-Algorithmus drucken, bevor Sie auf die nächste Prüfung der Ergebnisse nicht angezeigt, bis alle abgeschlossen haben.
Ich habe keinen aktuellen Code gepostet, da all dies eine ziemlich große Menge an Code umfasst, aber ich kann jeden Abschnitt des Codes posten, der zur Hilfe benötigt wird.