Sver
Full Member
Posts: 145
|
Post by Sver on Nov 9, 2023 9:13:14 GMT -5
fileName$ ="test.txt" requiredLine =7
open fileName$ for input as #i f$ =input$( #i, lof( #i)) close #i
line7$ =word$( f$, 7, chr$( 13)) if line7$ =chr$( 13) +chr$( 10) or line7$ ="" then notice "Empty line! ( or file has fewer lines)."
print line7$
|
|
|
Post by tsh73 on Nov 9, 2023 10:00:25 GMT -5
Interesting idea But according to Help file, on two delimiters word$ return delimiter for empty item. So eimpty for chr$(13) should be chr$(13) (and in Windows, lined elimiter is CRLF, so empty line retrned chr$(10) instead) (anyway, line7$ was never going to be chr$( 13) +chr$( 10))
So I rewrote thungs a bit. Now it prints three variants:
Line 3 is empty line.
File test.txt has fewer lines then 7
Required line #: 2 >113<
fileName$ ="test.txt" requiredLine =2
CRLF$=chr$( 13)+chr$( 10)
open fileName$ for input as #i f$ =input$( #i, lof( #i)) close #i
reqLine$ =word$( f$, requiredLine, CRLF$)
select case reqLine$ case CRLF$ print "Line "; requiredLine ;" is empty line." case "" print "File ";fileName$;" has fewer lines then "; requiredLine case else print "Required line #: ";requiredLine print ">";reqLine$;"<" end select
|
|
Sver
Full Member
Posts: 145
|
Post by Sver on Nov 10, 2023 3:38:00 GMT -5
, Thanks. The enter en the line feed makes it difficult. When we can read a line, then we can write or change a (new) line '(re)write a line in test.txt
'one 'two 'three 'four
linenumber=2 'no zero ! newtext$="two changed" file$="test.txt" '---- open file$ for input as #i f$ =input$( #i, lof( #i)) close #i '-----------------------------------------------------
print instr(f$, chr$(13)), " enter" print instr(f$, chr$(10)), " line feed" print
' find startpos line start=0 for i=1 to linenumber-1 start=instr(f$, chr$(10), start+1) 'upto chr$ line feed next '-------------------------------------------------------- print start, "startposition line x"
firststring$=left$(f$,start) 'incl enter+ line feed chr$
print print firststring$, "string upto line x" print len(firststring$),"incl enter and line feed" print
endpos=0 for i=1 to linenumber endpos=instr(f$, chr$(13), endpos+1) next
print endpos, "end line x without enter and line feed"
lengfile=len(f$) print lengfile, "total lenght file f$"
aft=lengfile - endpos+1 print aft
laststring$=right$(f$,aft)
print laststring$, "string after line x" print instr(laststring$, chr$(13)), " enter" 'have to be 1 print instr(laststring$, chr$(10)), " line feed" 'have to be 2 print
f$= firststring$+newtext$+laststring$
print f$
open file$ for output as #i print #i, f$ close #i
end
|
|
Sver
Full Member
Posts: 145
|
Post by Sver on Nov 11, 2023 3:10:07 GMT -5
Small addition
'------------------------------(re)write a line in test.txt----------------------
linenumber=3 'no zero ! newtext$="three" file$="test.txt" ---- if linenumber=0 then notice "linenumber=0"
open file$ for input as #i f$ =input$( #i, lof( #i)) close #i '----------------------------------------------------- 'find startpos line start=0 for i=1 to linenumber-1 start=instr(f$, chr$(10), start+1) 'upto chr$ line feed next '-------------------------------------------------------- 'string$ before line firststring$=left$(f$,start) 'incl enter+ line feed chr$ '------- endpos=0 for i=1 to linenumber endpos=instr(f$, chr$(13), endpos+1) next
lengfile=len(f$) if endpos=0 then endpos=lengfile+1 'chrs not found/ no line - add ! '---------------------- 'string$ after line aft=lengfile - endpos+1 laststring$=right$(f$,aft) '--------------- 'new$ string f$= firststring$+newtext$+laststring$
open file$ for output as #i print #i, f$ close #i
|
|