Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

comparing two files only looping once

Posted on 2010-11-29
4
Medium Priority
?
468 Views
Last Modified: 2012-05-10
Hi, Im trying to compare two text files. Im taking the first line from file A and checking each line in file B, then trying to take the 2nd line from file A and check all lines in file B. The problem im having is that once i go through all lines in file B, i cant restart the count - my loop only goes through file B once. Is there a way in which i can set it to start reading in the file from the begining each time?
thanks
Function CheckFileDetails()

Dim fso, objFile_B, objFile_A, FileA, SavedFilesFolder, intRows 
Dim FileAContents, arrFileAContents, strLine, linecount 

'Set Variables 
linecount = 0
strFolder = "C:\Test_Auto\" 
objFile_B = "FileB.txt"
objFile_A = "FileA.txt"
 
'Create Objects 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objShell = CreateObject("Shell.Application") 
 
'Set variables
	billerFound = False

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Const intForReading = 1 
'Read in the contents of the biller master file  and new billers file
Set objFile_B = objFSO.OpenTextFile(strFolder & objFile_B, intForReading) 
Set objFile_A = objFSO.OpenTextFile(strFolder & objFile_A, intForReading) 

'Get todays date
today = Date
TodayArray = Split(today, "#", -1, 1)
today = TodayArray(0)

'Move through the new biller temp file and check if any of the activation dates are before todays date (if so check the BMF)
While Not (objFile_A.AtEndOfStream) 
Dim NewBillerArray
	strLine = objFile_A.ReadLine 
'	call SplitUpNewBillerFile(strLine)
	NewBillerArray = Split(strLine, ",", -1, 1)

'check the activation date is before or on todays date
If (NewBillerArray(0) <= today) Then

'  if NewBillerArray(0) exists in strLine
   strLineBMF = objFile_B.ReadLine

	'searching the BMF  for Long Name - if that exists, then check that entire line and compare against New Biller file
		While Not ((objFile_B.AtEndOfStream) OR (billerFound = True))
		   strLineBMF = objFile_B.ReadLine 'read in line again on next loop

	If InStr(strLineB, NewBillerArray(3)) Then

'do something


	End If
        Wend 
End If

Wend


'Close both files that we're comparing
objFile_B.Close
objFile_A.Close

End Function

Open in new window

0
Comment
Question by:DiCanio13
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 59

Expert Comment

by:Chris Bottomley
ID: 34236701
How about reading both files into arrays and then processing them completely in memory ... or at least the second file and then cycle through that array?

Chris
0
 
LVL 13

Accepted Solution

by:
themrrobert earned 1200 total points
ID: 34236713
You absolutely should compare the files in memory.


'Get todays date
today = Date
TodayArray = Split(today, "#", -1, 1)
today = TodayArray(0)

'Set variables
	billerFound = False

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Const intForReading = 1 
'Read in the contents of the biller master file  and new billers file
Set objFile_B = objFSO.OpenTextFile(strFolder & objFile_B, intForReading) 
Set objFile_A = objFSO.OpenTextFile(strFolder & objFile_A, intForReading) 
Dim strFile_A as String
Dim strFile_B as String

'Move through the new biller temp file and check if any of the activation dates are before todays date (if so check the BMF)
While Not (objFile_A.AtEndOfStream) 
	strFile_A = strFile_A & objFile_A.ReadLine & vbCrLf
Wend
While Not (objFile_B.AtEndOfStream) 
	strFile_B = strFile_B & objFile_B.ReadLine & vbCrLf
Wend
'Close both files that we're comparing
objFile_B.Close
objFile_A.Close

'Now compare with the temp 'files' which are large strings containing the entire file.

Open in new window

0
 
LVL 59

Assisted Solution

by:Chris Bottomley
Chris Bottomley earned 800 total points
ID: 34236791
Without wishing to try and edit your whole script ... the following takes a single file and creates an array for processing:

DO it twice one after the other and you will have two arrays with the data and the files closed and released before you even start data processing.

Chris
Set objFSO = CreateObject("scripting.filesystemobject")
   Set objStream =
objFSO.getfile(strFolder & objFile_B).openastextstream
   arr_B = split(objStream.ReadAll, vbcrlf)
   objstream.close
' Repeat for A
'...
	for each entity in arr_A
        	for each entity in arr_B
     	        	'Compare lines in B with Line in A
        	Next
	Next

Open in new window

0
 

Author Closing Comment

by:DiCanio13
ID: 34237032
thanks guys, great help as usual
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Script to copy or move mouse-selected collection of files plus targets referenced by shortcuts (.lnk) The purpose of this article is to help illuminate the real challenges and options available (where they may exist) for utilizing simple scriptin…
When it comes to writing scripts for a Client/Server computing environment it is essential to consider some way of enabling the authentication functionality within a script. This sort of consideration mainly comes into the picture when we are dealin…
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…

604 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question