VBWinDiff : Interface d'options pour le comparateur WinDiff (et WinMerge)

https://github.com/PatriceDargenton/VBWinDiff

Ancien dépôt : https://codes-sources.commentcamarche.net/source/52370

Documentation : VBWinDiff.html

Code source : VBWinDiff.vbproj.html

Par Patrice Dargenton

http://patrice.dargenton.free.fr/CodesSources/index.html

 

Version 1.13 du 04/08/2024

 

VBWinDiff permet d'ajouter des options utiles pour le comparateur de fichier texte WinDiff, ainsi que WinMerge : l'idée, c'est d'effectuer un prétraitement des fichiers textes à comparer, de façon à ignorer des détails qui surchargent la comparaison via WinDiff ou WinMerge. Exemple : si vous avez des espaces insécables dans un fichier et pas dans l'autre, WinDiff vous affiche des tas de différences qui ne vous intéressent sans doute pas. De même pour la casse (majuscule/minuscule), les accents, la ponctuation. Il reste cependant des limitations : si les phrases sont trop longues, ou bien s'il y a un retour à la ligne dans une phrase, la détection ne fonctionne plus. Du coup, il y a une option permettant la comparaison mot à mot : WinDiff retrouve alors l'ensemble des différences sans ternir compte de la ponctuation, seulement des mots, ce qui est utile par exemple pour comparer deux versions d'un texte.

Si le texte est trop long, le temps de comparaison explose avec WinDiff (en mode mot à mot), du coup j'ai ajouté une pagination, par page de 100 Ko. Cela évite le plantage donc, mais si les tailles des deux documents divergent un peu, la divergence s'accentue de page en page. On pourrait améliorer un peu la pagination au prorata de la longueur des deux fichiers (au lieu d'une taille unique pour les deux fichiers), mais la limitation vient essentiellement de WinDiff. Sur CodeProject, il y a eu un concourt en 2009 pour concevoir le meilleur algorithme de comparaison de fichier texte, mais il n'y avait pas d'interface graphique (GUI) comme WinDiff au programme : dommage ! (c'est un peu ballot tout de même).

Aussi je lance un appel à ceux qui auraient un lien au sujet d'une interface aussi simple que WinDiff (avec ou sans le code source en DotNet), pour un algo. aussi performant que ceux du concourt de CodeProject.

 

 

Table des matières

Mode d'emploi 2

Limitations. 2

Projets. 2

Historique des versions. 2

Versions suivantes. 2

Version 1.12 du 03/09/2022. 3

Version 1.11 du 02/05/2022. 3

Version 1.10 du 03/05/2020. 3

Version 1.09 du 08/06/2018. 3

Version 1.08 du 19/01/2018. 3

Version 1.07 du 26/03/2017. 3

Version 1.06 du 22/03/2015. 3

Version 1.05 du 03/05/2014. 3

Version 1.04 du 04/01/2014. 3

Version 1.03 du 02/01/2011. 3

Version 1.02 du 17/10/2010. 4

Version 1.01 du 10/10/2010 : Première version. 4

Liens. 4

Voir aussi 4

 

 

Mode d'emploi

 

Placer un raccourci vers VBWinDiff.exe dans le dossier SendTo de Windows (droit admin. requis), et envoyer deux fichiers à comparer vers VBWinDiff via l'explorateur de fichier de Windows.

 

Chemin du dossier SendTo depuis Windows XP :

"C :\Documents and Settings\[MonCompte]\SendTo"

 

Chemin du dossier SendTo pour Windows Vista :

"C :\Documents and Settings\[MonCompte]\Application Data\Microsoft\Windows\SendTo"

 

Chemin du dossier SendTo depuis Windows 7 et supérieurs :

"C :\Users\[MonCompte]\AppData\Roaming\Microsoft\Windows\SendTo"

 

Note : si vous lancez VBWinDiff sans argument, VBWinDiff se chargera de gérer ce raccourci : installation / désinstallation.

 

Ratio de pagination : c'est une option pour paginer en considérant que les textes ont un contenu identique, même s'ils ne sont pas de la même longueur : soit la différence de taille est due par exemple à la présence de sauts de lignes à chaque ligne dans l'un des deux fichiers (dans ce cas appliquer le ratio), soit l'un des textes a du contenu en plus ; dans ce cas, soit se contenu est à la fin, soit on ne sait pas, et alors dans ce cas il peut être utile aussi d'appliquer un ratio.

 

Comparaison mot à mot : Si vous devez comparer deux textes dont l'un a des retours à la ligne intempestif, il faut alors tenter une comparaison mot à mot (sans la ponctuation, ni les phrases, juste les mots successifs au "kilomètre"). Si en plus la césure des mots a été appliquée, VBWinDiff peut alors corriger automatiquement ces mots coupés sur une base statistique : si le mot recollé est plus fréquent que la somme des tronçons, alors c'est une césure probable que l'on peut donc corriger. Dans ce mode, la taille des fichiers après traitement est affichée aussi, pour donner une idée de la similitude des deux documents. Pour activer cette option, décocher l'option Paragraphe.

 

 

Limitations

 

- WinDiff ne gère pas l'unicode (par exemple les caractères accentués son difficiles à lire) ;

- En mode mot à mot, WinDiff ne compare rapidement que des fichiers de moins de 100 Ko (sinon vous pouvez attendre longtemps, longtemps...) ;

- WinDiff ne gère pas les sauts de lignes dans une phrase (par exemple si l'un des fichiers provient d'un copié/collé via un fichier pdf) : les phrases ne sont plus détectées comme identiques, on est obligé de découper tous les mots pour que WinDiff puisse retrouver les différences.

 

 

Projets

 

- Comparaison phonétique (voir liens à la fin), comparaison des mots clés (voir VBTextFinder) ;

- Menu contextuel pour tous les fichiers (plus besoin du menu SendTo), comme WinMerge.

 

 

Historique des versions

 

Versions suivantes

https://github.com/PatriceDargenton/VBWinDiff/blob/master/Changelog.md

 

Version 1.12 du 03/09/2022

- Gestion de l'encodage des fichiers, utilisation de cette technique ;

- Sablier, en cas de traitement long.

 

Version 1.11 du 02/05/2022

- Si une phrase ne contient qu'un " alors ignorer ;

- Ne pas ignorer la casse si on ne le demande pas.

 

Version 1.10 du 03/05/2020

- Correction de la normalisation des guillemets « ».

 

Version 1.09 du 08/06/2018

- Cohérence améliorée de l'interface ;

- Correction de la fonction pour enlever les accents et les lettres collées (œ et æ) : cela ne fonctionnait pas avec æ, on perdait le e collé, utilisation d'une technique alternative qui fonctionne bien ;

- Passage de DotNet 2.0 -> 4.5.2.

 

Version 1.08 du 19/01/2018

- Possibilité d'ignorer les numériques (n° de page, ...).

 

Version 1.07 du 26/03/2017

- Possibilité d'ignorer les sauts de ligne multiples : si on décoche Espaces, alors supprimer aussi les sauts de ligne multiples.

 

Version 1.06 du 22/03/2015

- Gestion des guillemets “ ” ;

- Correction des couleurs de boutons qui apparaissent noir sous Windows 7 ;

- Pagination uniquement pour WinDiff (pas besoin pour WinMerge) ;

- Passage en VB 2013.

 

Version 1.05 du 03/05/2014

- Nettoyage des fichiers temporaire avant chaque comparaison ;

- Option pour utiliser WinMerge à la place de WinDiff, le cas échéant (décocher WinDiff) ;

- Option pour ignorer les espaces en début et fin de paragraphe ;

- Option pour normaliser les quotes (apostrophes) ;

- Mode pour ignorer les paragraphes (comparaison entre deux textes dont l'un a des retours à la ligne intempestifs), avec recollage des mots fréquents avec une césure ;

- Correction pagination : elle était parfois encore active après avoir décoché.

 

Version 1.04 du 04/01/2014

- Ajout d'une option Ratio pour paginer en considérant que les textes ont un contenu identique, même s'ils ne sont pas de la même longueur ;

- Correction de la pagination (on a maintenant une précision exacte lors d'un changement de page, car on pagine entièrement les documents avant toute opération) ;

- Correction de la cohérence des options ;

- Afficher page 1/n dès la page 1 si demandé ;

- Passage en VB 2010 (mais le fichier VBWinDiff.vbproj peut encore s'ouvrir avec VB 2008).

 

Version 1.03 du 02/01/2011

- Pagination : utile seulement lors de la comparaison mot à mot, dans le cas des phrases entières, la taille du document ne pose pas de problème ;

- La détection des espaces insécables ne fonctionne que si l'on conserve la ponctuation ;

- Pages 2 et suivantes : ne pas afficher infos si pas demandé ;

- Case à cocher pour lancer WinDiff ou pas, pour paginer ou pas, cohérences des options au départ (Phrases doit être coché au démarrage).

 

Version 1.02 du 17/10/2010

- Gestion du raccourci SendTo VBWinDiff : installation / désinstallation.

 

Version 1.01 du 10/10/2010 : Première version

 

 

Liens

 

Voir aussi

DBComp : le comparateur de structure de base de données Access (ou ODBC) avec WinDiff

            Code source : DBComp.vbp.html

 

DBReport : DataBase Reporting tool for DataBase Administrator

            Code source : DBReport.vbproj.html

 

WinDiff : version 5.2.3790.0 du 24/03/2003 livrée avec Windows 2003 (Microsoft Source Code Samples).

 

WinMerge : un outil Open Source pour comparer des fichiers et dossiers comme WinDiff.

 

- Concourt sur un WinDiff like : Code Lean and Mean (pas de GUI pour le moment ?)

  www.codeproject.com/script/Awards/View.aspx?cid=358

 

A Generic - Reusable Diff Algorithm in C#

  (longueur des phrases limitées à 1024 caractères, ergonomie à revoir)

  www.codeproject.com/Articles/6796/A-Generic-Reusable-Diff-Algorithm-in-C

  A Generic, Reusable Diff Algorithm in C# - II

  www.codeproject.com/KB/recipes/diffengine.aspx

 

- Registry Export File (.reg) Parser

  www.codeproject.com/Articles/125573/Registry-Export-File-reg-Parser

 

- A better front end to WinDiff

  www.codeproject.com/Articles/779/A-better-front-end-to-WinDiff

 

Soundex Implementation in C# and VB.NET

  A simple soundex implementation in C# and VB.NET to recognize phonetically similar words based on basic soundex algorithms

  www.codeproject.com/KB/aspnet/Soundex.aspx

 

- Implement Phonetic ("Sounds-like") Name Searches with Double Metaphone Part V: .NET Implementation

  www.codeproject.com/Articles/4624/Implement-Phonetic-quot-Sounds-like-quot-Name-Sear

 

Algorithme Soundex

  www.csharpfr.com/code.aspx?ID=39423