[Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

How can I delete first 15 lines in a text file

Posted on 1999-01-11
8
Medium Priority
?
184 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 40 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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

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

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Suggested Courses
Course of the Month20 days, 14 hours left to enroll

864 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