IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

comparer les contenus de 2 fichiers texts


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 7
    Points : 6
    Points
    6
    Par défaut comparer les contenus de 2 fichiers texts
    bonjour!
    je désire réaliser un petit programme qui permet d'ouvrir deux fichiers texts, en accès séquentiel, et de comparer leurs contenus.Mon problème est que j'ai du mal à réaliser une boucle qui me permet d'ouvrir les 2 fichiers et de faire une comparaison ligne par ligne. Je sollicite une aide de la communauté pour pouvoir y parvenir.

    Merci d'avance

    yan-doka

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Voici une fonction pour récupérer un fichier texte dans une chaine de caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    ' gets the whole file in a string
    Public Function LoadFile(ByVal sFileName As String) As String
    On Error GoTo erreur
        Dim nFile As Integer, sText As String
        nFile = FreeFile
        If Not FileExist(sFileName) Then Exit Function
        Open sFileName For Binary Access Read Lock Write As nFile
        sText = String$(LOF(nFile), 0)
        Get nFile, 1, sText
        Close nFile
        LoadFile = sText
    erreur:
    End Function
     
    ' function FileExist not requiring a dir$ call
    Function FileExist(ByVal tFile As String) As Boolean
        On Error Resume Next
        Call FileLen(tFile)
        FileExist = (Err = 0)
    End Function
    Ensuite si tu veux analyser le contenu ligne par ligne, je te suggère un petit Split:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim tFile As String
    Dim tFileBody As String
    Dim arr() As String
    Dim i As Long
    tFile = "chemin vers ton fichier"
    tFileBody = LoadFile(tFile)
    arr = Split(tFileBody, vbCrLf)
    For i = LBound(arr) To UBound(arr)
        ' traitement sur arr(i) qui contient une ligne de texte
    Next i

  3. #3
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    C'est un travail extrement difficile a réaliser.A moins de vouloir le faire commen un défi que l'on, se lance, autant prendre un logiciel gratuit tout fait
    Celui ci est tres bien Ici

  4. #4
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    A moins qu'une fois de plus, j'ai mal compris, s'il s'agit de comparer 2 fichiers TEXTE, il n'y a pas de gros problème à mes yeux. Dans le principe on ouvre les 2 fichiers, on lit ligne à ligne chaque fichier, si les lignes sont différentes, je sais pas ce que tu veux faire, on va donc se contenter de le signaler dans l'exemple qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Option Explicit
     
    Private Sub Command1_Click()
    Dim Nf1 As Byte
    Dim Nf2 As Byte
    Dim Ch1 As String
    Dim Ch2 As String
    Dim FinFile1 As Boolean
    Dim Compteur As Long
     
    Nf1 = FreeFile
    Open "C:\file1.txt" For Input As #Nf1
    Nf2 = FreeFile
    Open "C:\file2.txt" For Input As #Nf2
     
    Do
      Compteur = Compteur + 1
      Label1 = "Comparaison des 2 lignes N° " & Compteur
      DoEvents
      On Error GoTo ErreurFile1
      Line Input #Nf1, Ch1
      On Error GoTo 0
      On Error GoTo ErreurFile2
      Line Input #Nf2, Ch2
      On Error GoTo 0
      If FinFile1 = True Then
        'Si on arrive là c'est que on a atteint la fin du fichier1 mais pas la fin du fichier 2
        MsgBox "Le premier fichier comporte moins de lignes que le deuxième fichier", vbExclamation, "Différence trouvée"
        'Fin du test
        Exit Sub
      End If
      If Ch1 <> Ch2 Then
        MsgBox "Une différence à été trouvée à la ligne " & Compteur & " :" & vbCrLf & Ch1 & vbCrLf & Ch2, vbExclamation, "Différence trouvée"
      End If
    Loop
    Exit Sub
     
    ErreurFile1:
      If Err = 62 Then
        'On est arivé à la fin du fichier 1, on continue pour voir si on arrive aussi à la fin du fichier 2
        'On met un flag pour signaler que la fin du fichier1 est atteinte
        FinFile1 = True
        Resume Next
      End If
     
    ErreurFile2:
      If Err = 62 Then
        'On est arivé à la fin du fichier 2, était on déjà à la fin du fichier 1 ?
        If FinFile1 = False Then
          MsgBox "Le deuxième fichier comporte moins de lignes que le premier fichier", vbExclamation, "Différence trouvée"
        End If
        'Fin de la comparaison
        MsgBox "Comparaison finie", vbInformation, "Fin de la comparaison"
        Label1 = ""
        Exit Sub
      End If
     
    End Sub
     
    Private Sub Form_Load()
    Label1 = ""
    End Sub
    Evidemment, il reste du travail à faire sur le traitment d'erreur etc, mais dans les grandes lignes, ça compare bien 2 fichiers texte.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2002
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 7
    Points : 6
    Points
    6
    Par défaut comparer les contenus de 2 fichiers textes
    En effet lors de la comparaison des fichiers ligne par ligne, si une ligne est differente de son homologue alors on enregistre la ligne differente dans un fichier texte.
    Merci pour vos contributions

  6. #6
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Et il suffit d'une ligne ajoutée ou supprimée dans l'un des deux fichiers pour que ca ne serve plus a rien !

  7. #7
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Delbeke, je n'ai pas eu la prétention de faire une comparaison exhaustive entre 2 fichiers texte, toutefois dès qui'l y a une ligne en plus ou en moins, ce petit exemple va le signaler en donnant le numéro de ligne.
    C'est lourdingue bien sûr mais au moins tu sais où est la différence quitte ensuite à éditer tes fichiers pour poursuivre la comparaison.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2011, 18h25
  2. effacer les données d'un fichier texte
    Par Shyboy dans le forum Langage
    Réponses: 7
    Dernier message: 28/06/2006, 14h23
  3. Réponses: 6
    Dernier message: 30/05/2006, 12h41
  4. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 16h01
  5. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 17h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo