Solved

Input #1 won't bring in the entire line

Posted on 2003-12-10
9
663 Views
Last Modified: 2010-05-01
I have a simple, but LARGE text file that I'd like to weed through automatically (using VB).
Basically, it's a log listing of certain files on my servers.
What I'd like to do is step through the log and check two lines, keeping them both in another file, if line 2 meets certain criteria.

Sample of my log:
------------------------------------------------------
Directory of \\FileServer5\Marketing\Photos\

04/09/1999  11:42 AM            32,768 OurTrip.jpg
--------------------------------------------------------

Now, if OurTrip.jpg exceeds 100,000,000, I want to make note of that in another file.

The problems I have are:
1> My log isn't consistent.  Sometimes, I'll have the first line, but not the second (for whatever reason, my script didn't pull the file info, I suppose).  So, if the second line (acutally the 3rd, cause there is a blank space between each line), is empty, I want to discard that entry and move on.

2> I've tried to pull the file in using the following code:
   Open "C:\files.log" For Input As #1
      Do While Not EOF(1)
        Input #1, mystring
        If Left(Trim(mystring), 15) = "Directory of \\" Then dirRoutine (mystring)
'****
      Loop
   Close #1
End Sub

The comment line '**** is where I'd like to check the size, but after the first loop, it only reads in "4" for that second line.  If I add a second variable to the input line, it will also pull in 11 from that second field, but I can't get it to pull in the entire line into one string - why not??

Can what I want to do, be done?
Should I go about it another way?

TIA!
~sirbounty
0
Comment
Question by:sirbounty
[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
  • 5
  • 4
9 Comments
 
LVL 14

Expert Comment

by:aelatik
ID: 9913777
Line Input #1, mystring

instead of

Input #1, mystring
0
 
LVL 14

Expert Comment

by:aelatik
ID: 9913816
This would be the whole picture :

Open "C:\files.log" For Input As #1
      Do While Not EOF(1)
       Line Input #1, mystring
        If Left(Trim(mystring), 15) = "Directory of \\" Then dirRoutine (mystring)
'****
      Loop
   Close #1
End Sub
0
 
LVL 67

Author Comment

by:sirbounty
ID: 9913825
That works much better - thanx.
Is there a for me to break down line 2 so that I can assign a variable to the date (the 1st part), time (2nd), size (3rd) and filename (which may include spaces...)
0
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 
LVL 14

Expert Comment

by:aelatik
ID: 9914126
What exactly is the contruction of you log file. What do you use as seperators ?
0
 
LVL 14

Accepted Solution

by:
aelatik earned 350 total points
ID: 9914204
This will work on the sample log you posted, but if other logs have different formats it won't work

Private Sub Form_Load()
Dim vDate, vTime, vSize, vFile, buffer
Open "C:\files.log" For Input As #1
      Do While Not EOF(1)
       Line Input #1, MyString
        buffer = Split(MyString, "            ")
        If UBound(buffer) = 1 Then
            vDate = DateValue(buffer(0))
            vTime = TimeValue(buffer(0))
            vSize = Split(buffer(1), " ")(0)
            vFile = Split(buffer(1), " ")(1)
            MsgBox vDate
            MsgBox vTime
            MsgBox vSize
            MsgBox vFile
        End If
      Loop
   Close #1
End Sub
0
 
LVL 67

Author Comment

by:sirbounty
ID: 9914252
It's just the one log file.  Format should be the same.  I should be able to get it from here.  I'll let you know shortly.
Thanx for the help!!!
0
 
LVL 67

Author Comment

by:sirbounty
ID: 9914832
aelatik, this is perfect!
Can you perhaps give me a brief description of split and buffer? (or a web ref).
I'm taking my 3rd course in VB, but I've taken so much time over the holidays (and then some) away from it, that I think I've lost a bit.  Although, I don't recall these commands, but we're mostly working with ADO stuff. . .

Thanx again!
0
 
LVL 14

Expert Comment

by:aelatik
ID: 9915844
First of all, buffer doesnt mean a thing. Its a simple variable declaration.

The Split() function will split a given string to an array, you can set the delimeter yourself.

Example :

S = "1;2;3;4;5"
F = Split(S,";")

The results are as following :

F(0) = 1
F(1) = 2
F(2) = 3
F(3) = 4
F(4) = 5

example : msgbox F(0)

or a for each loop

For each X in F
 msgbox X
next
0
 
LVL 67

Author Comment

by:sirbounty
ID: 9916919
So it creates an array - great.  Thanx again!
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

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

Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

739 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