BBS: Inland Empire Archive Date: 01-31-93 (21:28) Number: 333 From: MATT HART Refer#: NONE To: DENIS DUBUC Recvd: NO Subj: help Conf: (2) Quik_Bas
DD> I would like to know how to the Command for viewing a text file
'
' VIEWFILE.BAS by Matt Hart
' View any size text file without any temporary files.
' Keeps the SEEK position of each line in a long integer array -
' which does limit this to 16,384 lines of text (and makes this
' program easy, small, and fast.) Key controls are up, down,
' left, right, page up, page down, end, home, and escape.
'
'$DYNAMIC
DEFINT A-Z
'
CONST False = 0
CONST True = NOT False
'
File$="VIEWFILE.BAS"
Escape=false
'
OPEN "I",1,File$
REDIM Seeks&(1 to 16384) ' Max number of lines is 16384
CurSeek& = 1
NumLines = 0
DO UNTIL EOF(1)
LINE INPUT #1, Text$
NumLines = NumLines + 1
Seeks&(NumLines) = CurSeek& ' Save starting position
CurSeek& = CurSeek& + LEN(Text$)+2 ' Next position - 2 is
LOOP ' for C/R & LF
'
CurCol = 1 ' Current Column
SeekEl = 1 ' Current line
Escape=false
DO
gosub LoadAndDisplay
gosub KeyProcess
LOOP UNTIL Escape
CLOSE 1
END
LoadAndDisplay:
SEEK #1, Seeks&(SeekEl)
FOR i=1 to 24
IF NOT EOF(1) THEN LINE INPUT #1, Text$ ELSE Text$=""
Strg$=SPACE$(80)
IF LEN(Text$)<CurCol THEN Text$=Text$+SPACE$(CurCol-LEN(Text$))
LSET Strg$=MID$(Text$,CurCol)
LOCATE i,1,0 : PRINT Strg$;
NEXT i
RETURN
KeyProcess:
A$=INKEY$ : IF A$="" THEN GOTO KeyProcess
SELECT CASE A$
CASE CHR$(27) : Escape = true ' ESC
CASE CHR$(0)+CHR$(72) ' Up Arrow
SeekEl=SeekEl-1
if SeekEl<1 then SeekEl=1:GOTO KeyProcess
CASE CHR$(0)+CHR$(80) ' Dn Arrow
SeekEl=SeekEl+1
if SeekEl+23>NumLines then SeekEl=SeekEl-1:GOTO KeyProcess
CASE CHR$(0)+CHR$(77) ' Right Arrow
CurCol=CurCol+1
CASE CHR$(0)+CHR$(75) ' Left Arrow
CurCol=CurCol-1
if CurCol<1 then CurCol=1:GOTO KeyProcess
CASE CHR$(0)+CHR$(73) ' Page Up
SeekEl=SeekEl-24
if SeekEl<1 then SeekEl=1
CASE CHR$(0)+CHR$(81) ' Page Dn
SeekEl=SeekEl+24
if SeekEl-23<NumLines then
SeekEl=NumLines-23
if SeekEl<1 then SeekEl=1:GOTO KeyProcess
endif
CASE CHR$(71) ' Home
SeekEl = 1
CASE CHR$(79) ' End
SeekEl=NumLines-23
if SeekEl<1 then SeekEl=1:GOTO KeyProcess
CASE ELSE
GOTO KeyProcess
END SELECT
RETURN
---
* Origin: Midnight Micro! V.32/REL (918)451-3306 (1:170/600)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET