Solved

How can I delete first 15 lines in a text file

Posted on 1999-01-11
8
177 Views
Last Modified: 2010-05-03
I am using file to write log details. I want the size of the file to be less than 15k. So when ever it exceeds 15k i want to delete the oldest data. How can I delete the old data leaving the latest data. I am writing to the file with append mode.
0
Comment
Question by:lesa
  • 5
  • 2
8 Comments
 
LVL 2

Accepted Solution

by:
VBDesigns earned 10 total points
ID: 1455543
If it's a text file, this way should work:

Dim iFF as Integer
Dim lLength as Long
CONST MAX_FILE_LEN = 15000
Dim sValue as String * MAX_FILE_LEN

iFF = FreeFile

Open "c:\textfile.txt" for binary as #iFF
lLength = LOG (#iFF)
if lLength > MAX_FILE_LEN then
   Seek(#iFF), (lLength - MAX_FILE_LEN)
   Get #iFF, , sValue
endif

Close #iFF

Kill "c:\textfile.txt"

Open "c:\textfile.txt" for Binaryt as #iFF
Put #iFF, , sValue
Close # iFF
0
 

Author Comment

by:lesa
ID: 1455544
I want the oldest data to be deleted means the top data in the file because as I am using the append method latest will be at bottom. So plese let me know how can I do it.
0
 

Author Comment

by:lesa
ID: 1455545
I want the oldest data to be deleted means the top data in the file because as I am using the append method latest will be at bottom. So plese let me know how can I do it.
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 

Author Comment

by:lesa
ID: 1455546
I want the oldest data to be deleted means the top data in the file because as I am using the append method latest will be at bottom. So plese let me know how can I do it.
0
 

Author Comment

by:lesa
ID: 1455547
I want the oldest data to be deleted means the top data in the file because as I am using the append method latest will be at bottom. So plese let me know how can I do it.
0
 

Author Comment

by:lesa
ID: 1455548
I want the oldest data to be deleted means the top data in the file because as I am using the append method latest will be at bottom. So plese let me know how can I do it.
0
 
LVL 3

Expert Comment

by:vikiing
ID: 1455549
As the file you're working with is a sequential (text) one, the only thing you can do is:
a) Load file lines into an array (a vector), and calculate how many lines it has
b) Destroy original file and re-create a newer one, starting with line #n (where "n" depends on the amount of data you want to get rid of).

Code can be something like this:

Dim TextLines$(30000) : F%=FreeFile
Open <file> for input as F% : LC%=0
Do Until EOF(F%)
   LC%=LC%+1 : Line Input #F%,TextLines$(LC%)
Loop

Close #F% : Open <file> for output as #F%
For I%=N% to LC%   <==== Read below ====>
   Print #F%,TextLines$(I%)
Next I%

The value N% at For instruction, specifies which is the first line you want to keep in the file (toghether from there downwards). Doing so, you're chopping the first N%-1 lines.

Perhaps you want to chop the file in order its final size be EXACTLY 15 Kb. In that case, value N% must be found counting lengths of lines, this way:

FullSize%=LOF(F%) : N%=0
Do
   N%=N%+1 : FullSize%=FullSize%-Len(TextLines$(N%))-2
Loop Until FullSize%<=15360   '15360 = 15 * 1024 = 15 Kb

When FullSize% reaches 15K, N% will have the first line from which the rest of the file will fit into that size.


0
 
LVL 3

Expert Comment

by:vikiing
ID: 1455550
I had a mess with "15k" and "15 lines". In the code I've posted, write out the For as

     For I%=16 to LC%

and forget the portion below (because N%=16, and doesn't need to be calculated)
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
How to debug this code 7 64
Add and format columns in vb6 7 63
how to know if my Checkbox is True in VB6.0? 9 60
Dinamic report to Crosstab query 9 33
I’ve seen a number of people looking for examples of how to access web services from VB6.  I’ve been using a test harness I built in VB6 (using many resources I found online) that I use for small projects to work out how to communicate with web serv…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
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…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

808 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