Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#/WinForms] Différence colorisé entre 2 fichiers

Sujet résolu
    27 mai 2011 à 12:10:03

    Bien le bonjour zéro-boys et zéro-girls !

    J'aurais besoin d'aide pour réaliser un comparateur de fichier qui colorise les différences (exactement comme http://www.siteduzero.com/forum-83-329 [...] fichiers.html ) en C#

    Je comprend comment faire la recherche ligne par ligne, comment afficher le bouzin ... mais je suis perdu/paniqué lorsqu'il faut coller le tout ou lorsqu'il s'agit de détails.

    Donc on est partit pour les questions, en espérant que quelqu'un pourra me répondre :

    1) Dans l'exemple que j'ai donné, on voit qu'au début de chaque lignes il y a le numéro de ligne... Le composant utilisé c'est quoi? Un text box suffit mais n'y a t'il rien de plus propre que de rajouter le n° de ligne en dur (genre un composant deja existant pour ca)

    2) Si on synthétise l’algorithme est-ce que ca donne un truc comme ca ?

    En supposant que les 2 fichiers soient "entré" et "sortie"
    Je recherche mes fichiers 
    Je les parcours et les stock en mémoire.
    
    Je regarde ligne par ligne si ya une différence et affiche le contenu de chq fichiers dans chaque fenêtre
    
    Si ligne de entré est absente dans sortie
    > colorer la ligne de entré en rouge
    Si ligne de sortie est absente dans entré
    > colorer la ligne de sortie en vert
    Si la ligne de sortie est modifié dans entré
    > Colorer la ligne de sortie et de entré en marron


    Est-ce que cet algo est d'après vous fonctionnel?

    3) Quel est la méthode pour colorer le fond d'une ligne?

    4) Est-ce que, dans l'hypothèse ou vous n'auriez pas la réponse, vous auriez des liens de ce type de feature car je n'ai rien trouvé de mon coté sur le net.

    Merci d'avance a ceux qui y jeterons un oeil
    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2011 à 12:33:32

      Au niveau des contrôles, tiliseras-tu du Windows Form pour ton appli, ou wpf?

      Sinon, pour l'algo, il va y'avoir un souci (que l'éditeur du lien a camouflé, d'ailleurs, en supprimant puis rajoutant directement une ligne :p ), c'est que si une ligne du fichier A est supprimée, avec ton algo actuel, toutes les lignes suivantes du fichier B seront différentes du A, puisque elles seront décalées... Alors qu'elles ne le sont pas forcément :(
      • Partager sur Facebook
      • Partager sur Twitter
        27 mai 2011 à 13:51:50

        En winForm pour les contrôles.

        Ha pas faux pour l'algo ... t'a une idée de comment résoudre ce problème ? (je pense simplement a la re-ajustation de la variable de ma boucle même si ca fait bourrin)

        Edit : Je viens de tomber sur le wiki du tool WinMerge qui fais la meme chose. http://wiki.winmerge.org/wiki/File_Compare

        Je suis actuellement en train de voir ce que je peux exploiter
        • Partager sur Facebook
        • Partager sur Twitter
          27 mai 2011 à 15:22:04

          L'ajuster doit être la seule façon :p Vaut mieux pas se lancer dans de la recherche de texte :/

          Sinon, niveau présentation, c'est peut être plus simple de faire comme le m'ssieur du lien : dans un tableau x) (DatagridView en win form, apparement) Doit y'avoir bien plus propre, mais ça résoud tous tes problèmes de numéro de ligne/ background d'une ligne (pas possible de façon simple dans une richtextbox)

          Tu auras la propriété backgroud pour les différentes lignes, a première colonne du tableau pourra directement contenir les numéros de lignes, et tu peux cacher le quadrillage pour faire genre c'est une text box :)

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            27 mai 2011 à 15:28:30

            Pour l'algo, je pencherais vers un compteur qui indique la ligne dans le fichier source et la ligne dans le fichier comparé, sinon ton programme va être archi-lent sur les gros fichiers.
            Par exemple, si la ligne 15 a disparu, il te faut comparer la ligne 16 du fichier 1 avec la ligne 15 du fichier 2 pour continuer.
            • Partager sur Facebook
            • Partager sur Twitter
              27 mai 2011 à 15:45:07

              Ok merci pour le datagridview, l'idée n'est pas bête !

              Aethec: toi tu ferais quoi?
              tu te servirais du n° de la ligne plutot que de la variable d'un for par exemple, c'est ca ?
              • Partager sur Facebook
              • Partager sur Twitter
                27 mai 2011 à 20:52:28

                Si jamais, ScintillaNET pourrait être intéressant dans ton cas pour l'affichage.
                • Partager sur Facebook
                • Partager sur Twitter

                [C#/WinForms] Différence colorisé entre 2 fichiers

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown