Link to home
Start Free TrialLog in
Avatar of themroc
themroc

asked on

how to ad one line to the end of a sequentiell file

I have to add one line to an existing sequentiell line,
so if the file looks as follows

line1
line2
line3
end

then I have to write
text line 4
behind line3

How do I do it with the
PRINT statement

can anyone give some coding??
ASKER CERTIFIED SOLUTION
Avatar of molar
molar
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Mike Tomlinson
If the "end" is not actually in the file, then molars code will work just fine.  If you are actually wanting to insert the line before the "end" line, then you have two choices:

1) Read the entire file into memory then write it back out adding your line before the end.

2) Read the file and write a second file as you go.  Then delete the original and rename the second file to the first.

Idle_Mind
my point, EXACTLY.

AW
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of MaxPol
MaxPol

Hi,

forgot to say that to open it for append you should do like this:

Open "your file name" For Append Access Write As #1


Bye,

Max
MaxPol:

because:

>If you open the file for append, then you could easily use

>print #1,"your last line" & vbcrlf


will end up with:


line1
line2
line3
end
line4

id 'end' is REALLY present as the last record in the original file.  If that is what is desired then OK, but otherwise the other comments apply.

AW
 
Ops,

then you could try to find the file size (use the FileLen command),

now open the file in random mode read write , and read data at the countrary (read byte by byte with reclen=8

if after end you have a vbcrlf, then do like this
Dim sString as string * 8
Dim lFilePos as long

lFilePos=FileLen("yourfilenamehere"
get #1,lFilePos-8,sString ' this will read the vbcrlf & "end" & vbcrlf  if after end you have vbcrlf if not, change the reclen=6 and sString to string *6 and lFilePos-6
Now you are in the right place,
do a Print#1, "the new line" & vbcrlf & "end" ' if required add vbcrlf

Bye,

Max



sub apptext(filename as string, stext as string)
dim i as integer,buff as string
i=freefile

open filename  for input as #i
       buff=input(lof(i),1)
close#i

open filename  for output as #i
       print#i,replace(buff,"end",stext,,vbtextcompare)
       print #i,"end"
close#i
end sub
Avatar of themroc

ASKER

thanks for the contributions, i am sorry that I could not reply earlier to say that the first answer was alresdy what I was after, but the additional comments were very helpfull

:}
well, if you finally use the first comment, take in mind the comments from Arthur_Wood.