Positionnement précis dans un fichier et comparaison du contenu de 2 fichiers tx
cs_ludo92
Messages postés7Date d'inscriptionlundi 26 septembre 2005StatutMembreDernière intervention29 septembre 2005
-
26 sept. 2005 à 10:56
cs_ludo92
Messages postés7Date d'inscriptionlundi 26 septembre 2005StatutMembreDernière intervention29 septembre 2005
-
27 sept. 2005 à 12:10
Bonjour,
je cherche à comparer le contenu de 2 fichiers et renvoyer le resultat dans un 3eme fichier
voila le code que j'ai fait pour y arriver mais cela ne fonctionne pas comme je voudrais
j'ai donc 2 fichiers
je parcours le fichier 1 en entier
pour chaque ligne de fichier 1 je regarde si il existe dans fichier 2
si oui alors j'écris la ligne de Fichier 2 dans fichier 3
si non alors j'écris la ligne de fichier 1 dans fichier 3
tel que le code est ecrit on pourrait penser que cela fonctionne
mais le pointeur sur le fichier 2 ne revient jamais en début de fichier
la methode Object.Line permet de savoir sur quelle ligne on se trouve dans le fichier
Il y a t il un methode pour se positionner sur une ligne précise dans un fichier ?
dans mon cas je souhaite revenir au début du fichier sans le fermer et le reouvrir
Si quelqu'un a une idée je suis preneur
merci d'avance
--------------------------------
Dim FSO, FileRef, FileNew, FileSourcesList, Ligne
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FileRef = FSO.OpenTextFile(Path_ReferenceCSVFile) 'fichier de reference
Set FileSourcesList = FSO.OpenTextFile(Path_FileSourcesList) 'fichier sources file
Set FileNew = FSO.CreateTextFile("E:\NewRefFile.csv", True) 'fichier resultat
ligneref = FileRef.Readline
lignecourant = FileRef.Line
Do While Not FileSourcesList.AtEndofstream
Ligne = FileSourcesList.Readline
foundline = 0
Do While Not FileRef.AtEndofstream
ligneref = FileRef.Realine
If InStr(ligneref, Ligne) <> 0 Then ' ligneref contient ligne
FileNew.writeline (ligneref)
foundline = 1
Exit Do
End If
Loop
If foundline = 0 Then
' laligne n'a pas été trouvé dans le fichier de ref donc on l'ajoute
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 26 sept. 2005 à 11:22
salut
est-ce que tes fichiers sont gros ?
notamment le fichier de référence ?
car je pense que s'il ne sont pas trop gros, il serait préférable de stocker le contenu du fichier de référence dans un tableau de string, et comparer ensuite ton fichier original avec ce tableau. Ca te fera gagner du temps au niveau de l'exécution et ca résoudra ton problème !
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 26 sept. 2005 à 11:43
oui, je splitterais selon "l'unité de comparaison" : est-ce que tu compares des phrases, des lignes, des mots ..
phrase: split(texte1, ".")
lignes: split(texte1,vbCr)
mots:split(texte1," ")
mettons les lignes:
dim ligne() as string
ligne()=split(texte1, vbCr)
for i = 0 to ubound(ligne)
monresul=instr(texte2, ligne(i))
next
tu peux également splitter le deuxième fichier et faire deux boucles l'une dans l'autre.
dim ligne&() as string:dim ligne2() as string
ligne1()=split(texte1, vbCr):ligne2()=split(texte2, vbCr)
for i = 0 to ubound(ligne1)
for j = 0 to ubound(ligne2)
monresul=instr(ligne(j), ligne(i))
next j
next i
moi, j'ai fais ça avec ADO et des BD en access, c'est impec.
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 26 sept. 2005 à 12:04
bah 4000 à 5000 je pense que ca reste raisonnable.
sinon je pense q'il doit exister des méthodes pour te positionner ou tu veux dans le fichier, mais je ne les connais pas. et en plus ton disque dur va prendre de sacrées claques (encore que la, vu le nombre de ligne, ca risque fort de swapper pas mal aussi, et donc c'est encore le DD qui va trinquer...)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 26 sept. 2005 à 14:15
alors tu peux toi-même créer une fonction split.
fais une recherche sur le forum, je me souviens d'avoir soit donné le code, soit la référence pour le trouver. (split n'existe que depuis VB6)
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 26 sept. 2005 à 20:21
Si tu doit comparer le fichier par lui même tu devrais faire la comparaison en mode Binaire, si par contre tu doit comparer les infos qui le compse alors oui il te faut un tableau.