Reads a text file into an array list with optional text wrapping.
updated code:
now demonstrates scrolling the text and how to show the text's display boundaries
set display mode 1024,768,16
rem text file to display
filename$ = "c:\vraylog.txt"
rem wrap text to this many characters (0 for no text wrapping)
maxCharWidth = 57
rem array list to hold text from file
dim words$(0) as string
rem check to see if file specified is a text file
if lower$(right$(filename$, 4)) = ".txt"
rem check if file exists
if file exist(filename$)
rem open file for reading
open to read 1, filename$
rem add text from file to array list
while file end(1) = 0
read string 1, temp$
if maxCharWidth > 0
wrapText(temp$, maxCharWidth)
else
array insert at bottom words$(0)
words$(array count(words$(0))) = temp$
endif
endwhile
endif
endif
rem close the file
close file 1
lin as integer
count as integer
tx as integer
ty as integer
lin = 1
count = 20
tx = 100
ty = 100
boxLength = text width(space$(maxCharWidth))
if maxCharWidth = 0 then boxLength = screen width()
boxHeight = text height(space$(1))*(count+1)
repeat
cls
if upkey() = 1
if lin > 1 then dec lin, 1
endif
if downkey() = 1
if lin < array count(words$(0))-count then inc lin, 1
endif
rem box to show text boundaries
ink rgb(100,100,100),0
box tx, ty, tx+boxLength, ty+boxHeight
rem display the text
showText(tx,ty,lin,count, rgb(255,128,255))
until spacekey()
rem wraps text and adds lines appropriately to array list
function wrapText(t$ as string, max as integer)
r$ = left$(t$,max)
array insert at bottom words$(0)
i = array count(words$(0))
words$(i) = r$
nl = len(t$) - max
if nl > 0
t$ = right$(t$,nl)
wrapText(t$, max)
endif
endfunction
rem displays text starting at coordinates X,Y and starts with line "lin"
rem showing "count" number of rows (or until end of text is reached)
function showText(x as integer, y as integer, lin as integer, count as integer, color as dword)
if lin > 0
th = text height(words$(1))
L = 0
ink color, 0
for t = lin to lin+count
if t <= array count(words$(0))
text x, y + L*th, words$(t)
inc L
endif
next t
endif
endfunction
"eureka" - Archimedes