Page 1 sur 1
comparer 2 fichier txt et ne garder que les differences ?
Publié : lun. 22/août/2005 14:51
par noob
bonjours @ tous
Je continu l'exploration de "purebasic" et je bloc a nouveau

, 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
Publié : lun. 22/août/2005 16:19
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+
Publié : lun. 22/août/2005 16:37
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.
Publié : lun. 22/août/2005 16:39
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 ^^
Publié : mar. 23/août/2005 11:15
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
