Fichier dupliqué avec une table de hachage

Soyez le premier à donner votre avis sur cette source.

Vue 5 782 fois - Téléchargée 1 305 fois

Description

Ce petit programme permet de rechercher des fichiers dupliqués à l'aide d'une table de hachage, les résultants sont mis dans une interface graphique les plus basiques. Je mets cette source à disposition pour que les débutants puissent comprendre, 'pas à pas' l'utilisation et l'élaboration d'une table.

Source / Exemple :


Dans une archive .zip.

Conclusion :


Sur ce site, il y'a un autre mini-programme qui recherche des fichiers dupliqués sur un disque quelconque. Cependant, il utilise une autre façon de faire, qui selon moi est beaucoup plus gourmande en mémoire que celui-ci.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

WhiteHippo
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
-
Bonsoir

Une petite remarque en passant :
Dans UTable tu déclares un type "table = array[0..N] of Liste" hors ta fonction "hachage" renvoie forcément un nombre supérieur à 0 du fait du +1 "result := clef(c) mod N + 1"; donc tu n'utiliseras jamais la cellule indexée par 0.

N.B. Il n'est pas nécessaire de laisser dans ton zip les fichiers inutiles (comme les .dcu).

Cordialement.
Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
Salut,
deux remarques additionnelles:
- pense à nommer tes compos pour que ça soit plus explicite
- il faudra songer à utiliser une fonction de hachage plus efficace dans la procédure clef. En effet, même sans faire exprès, deux fichiers quelconques ont une assez bonne probabilité d'obtenir la même clef. En fait, mathématiquement, et en supposant une fonction idéale, si tu calcules la clef de 65536 fichiers distincts, la probabilité qu'une clef survienne deux fois est de 50% (1/2 - paradoxe des anniversaires). Et ta fonction n'est pas idéale (il n'en existe aucune dans le cas général en fait), ce qui augmente encore plus la probabilité d'un doublon. Tu peux t'inspirer de quelques fonctions simples et rapides qu'on peut trouver sur internet (du type hachage universel, etc..), et une bonne idée serait d'utiliser un Int64 à la place d'un Cardinal. Ca devrait être bon à ce point. Evite bien sûr les fonctions de hachage cryptographiques car elles sont trop lentes (et pas besoin de sécurité ici mais plutôt de vitesse).

Sinon c'est pas mal.

Cordialement, Bacterius !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (jerome1875)