Code archives/File Utilities/Load and Display Text using types B3D (b+ need modification)
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| This Loads an Text into a type, then displays it in pagelike maner. Doesnt have any error checking for the loaded file. Its for B3D as b+ doesnt have locate command, and print goes into console window. It could be easily adapted for b+ too. | |||||
; Reads an File into Type
; And displays it on screen
; Use Arrow keys Up and Down to Browse the text
; Use Arrow keys Left and right to increase/decrease amount of displayed text
; Esc to end
Type Line ;Type named line for lines in a file
Field number ;Has number of lines
Field Text$ ;and the text on that line
End Type
Graphics 800,600,0,2 ; 800x600 screen, windowed
SetBuffer = BackBuffer
Global newtime,x,y,a
filename$ = "textdisplay.bb" ; Filename to read
Txt = ReadFile ( filename$ ) ; Open a file to read
a=0
oldtime=MilliSecs() ; Set timer
While Not Eof(txt) ; Start of reading the file
a=a+1 ; Line numbers counter
thisLine.Line = New Line ; New Type named ThisLine
thisline\number =a ; Holds the actual line number for later reference
thisline\Text$= ReadLine$ (txt) ; And reads the Text
Wend
newtime=(MilliSecs()-oldtime) ; Calculate the speed of reading
CloseFile txt ; Closes the filehandle
x=1 ; Starting point of the Text (1st line)
y=10 ; Display counter (10 lines here)
; Main Loop
Repeat
ShowLines(x,y)
Delay 20 ; Saves CPU Usage if you care about it !
key= GetKey() ; Check for a keypress
Select key
Case 31 ; Arrow Right
y=y-1
If y<1 Then y=1
Case 30 ; Arrow Left
y=y+1
If y>44 Then y=44 ; Max of lines to be displayed
Case 29 ; Arrow Down
x=x+y
If (x)>a Then x=x-y
Case 28 ; Arrow up
x=x-y
If x-y<0 Then x=1
End Select
Flip
Until KeyHit(1) ; Esc ends
;End of Main Loop
End ; Game Over :)
Function Border()
Color 255,255,255
Rect 0,0,800,15,1
Rect 0,585,800,600
Locate 0,585
Color 255,0,0
Print "Use Arrows: Up/Down to browse - Left/Right to Dec/Inc lines - Esc ends"
Color 0,0,0
Locate 0,0
Print "Starting at ("+x+"/"+a+") And showing ("+y+") lines - Text was readed in ("+newtime+") miliseconds"
Color 255,255,255
End Function
Function ShowLines(Start,Length)
Cls
Border
For ThisLine.Line = Each Line
; Checks if start line number + Length number is in the thisline\number, if yes displays it :
If (thisline\number>=Start And thisline\number<=(Start+Length)-1 )
Print thisline\number+":"+thisline\Text$
End If
Next
End Function |
Comments
None.
Code Archives Forum