comparer 2 fichier txt et ne garder que les differences ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
noob
Messages : 16
Inscription : dim. 14/août/2005 12:14

comparer 2 fichier txt et ne garder que les differences ?

Message par noob »

bonjours @ tous :)

Je continu l'exploration de "purebasic" et je bloc a nouveau :cry: , je voudrai comparer 2 fichier txt et en ecrire un 3 eme qui ne contient que les differences!

J'explique:les 2 fichiers txt contiennent chacun une liste de fichiers (creer avec WriteStringN) ==>retour a la ligne(jpense que c mieu pour pouvoir les comparer?)

a partir de la je voudrai creer un 3eme fichier qui ne contient les fichiers differents!!

ex: fichier1.txt
prog1
prog3

fichier2.txt
prog1
prog2

fichier3.txt
prog2
prog3

Un petit peu d'aide ne serai pas de refus !

merci d'avance
gilbert2
Messages : 13
Inscription : mar. 09/août/2005 23:30

Message par gilbert2 »

ok :)

Il faut pour coller a ton exemple lire les deux fichiers avec deux niveaux de rupture. Soit deux tant que (while) imbriqués.

Tu lis le premier fichier et ensuite tu lis le second et tu boucles tant que les deux lignes des fichiers sont equivalente sinon tu ecris ton troisieme fichier.

S'il existe une fonction line input en purebasic ca devrait pas trop te poser de probleme a faire ce que tu souhaites.

A+
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

Si tu respectes la contrainte de mettre une ligne par valeur, tu devrais facilement pouvoir construire deux tableaux temporaires avec les valeurs triées de chaq tableau pour les comparer et en déduire la liste des éléments identiques ou différents.

Essayes cela, et si tu bloques tu fais signe, je te donnerai un code pour démarrer.
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Bon j'étais en train de trouver mon erreur (très bête en plus mon erreur lol).

Bon je te donne quand même ma version :

Code : Tout sélectionner

op_file1.s=OpenFileRequester("Ouvrir le premier fichier ...","","Fichier texte (*.txt)|*.txt",0)
op_file2.s=OpenFileRequester("Ouvrir le second fichier ...","","Fichier texte (*.txt)|*.txt",0)

OpenFile(1,op_file1)
OpenFile(2,op_file2)
CreateFile(3,SaveFileRequester("Sauver le log ...","log.txt","Fichier texte (*.txt)|*.txt",0))

; traitement du premier fichier
Repeat
  UseFile(1)
  string_file1.s = ReadString()
  UseFile(2)
  FileSeek(0)
  Repeat
    string_file2.s = ReadString()
    If string_file1 = string_file2
      commun.l = 1
    EndIf
  Until Eof(2) Or commun
  If commun = 0
    UseFile(3)
    WriteStringN("Ligne non présente dans le fichier " + GetFilePart(op_file2) + " : " + string_file1)
  EndIf
  commun=0
Until Eof(1)

; réinitilise les 2 fichiers à comparer
UseFile(1)
FileSeek(0)
UseFile(2)
FileSeek(0)

; traitement du second fichier
Repeat
  UseFile(2)
  string_file2.s = ReadString()
  UseFile(1)
  FileSeek(0)
  Repeat
    string_file1.s = ReadString()
    If string_file2 = string_file1
      commun.l = 1
    EndIf
  Until Eof(1) Or commun
  If commun = 0
    UseFile(3)
    WriteStringN("Ligne non présente dans le fichier " + GetFilePart(op_file1) + " : " + string_file2)
  EndIf
  commun=0
Until Eof(2)

MessageRequester("Fini", "Traitement fini")
Sa peut-être simplifiable ^^
noob
Messages : 16
Inscription : dim. 14/août/2005 12:14

Message par noob »

boujour @ tous

je n'avais pas vu toutes vos reponses donc je vais m'y mettre dès aujourd'hui en tous cas merci pour vos réponses "gilbert2" "fweil" et "Dorian"

Je fais des essais et vous tiens au courant dans l'apres-midi ou demain

Encore une fois merci beaucoup pour votre aide et bonne continuation @ tous ;)
Répondre