BBS: Inland Empire Archive Date: 01-31-93 (07:59) Number: 356 From: TOM HAMMOND 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 that is more then 25 line long by having a thing like press a key to continue without having the file scrolling down to the END.The only thing that I've been able to do so far is using the | MORE Command, but there must be another way to control the text, I checked the 3 Books that I have but I haven't find anything. Could someone please help me? This may be more than you wanted, but it works GREAT... courtesy of Matt Hart... who used to frequent this Echo but who had been hiding recently... too bad, he was a REAL help to us newbies... NOTE that two (2) lines in the code to follow have been broken (wrapped) to the next line because they were too long to fit into the editor line length as-is. Each broken line has a single underline '_' at its end to indicate that the text from the NEXT line must be brought UP to THAT line when you edit the code. Be sure to REMOVE the underline after merging the two lines back into one. BTW, the KeyProcess subroutine is EXCELLENT for other uses.. I keep a copy of just that code and use it all the time. It's a great snippet to learn from. Good luck - Tom Hammond ' 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 <UpArrow>, <DnArrow>, ' <LtArrow>, <RtArrow>, <PgUp>, <PgDn>, <End>, <Home> and <Esc>. '$DYNAMIC DEFINT A-Z CONST false = 0 CONST true = NOT false CLS LINE INPUT "File Name: "; File$ Escape = false OPEN "I", 1, File$ REDIM Seeks&(1 TO 16384) ' Max number of lines if 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) ' <UpArrow> SeekEl = SeekEl - 1 IF SeekEl < 1 THEN SeekEl = 1: GOTO KeyProcess CASE CHR$(0) + CHR$(80) ' <DnArrow> SeekEl = SeekEl + 1 IF SeekEl + 23 > NumLines THEN SeekEl = SeekEl - 1:_ GOTO KeyProcess CASE CHR$(0) + CHR$(77) ' <RtArrow> CurCol = CurCol + 1 CASE CHR$(0) + CHR$(75) ' <LtArrow> CurCol = CurCol - 1 IF CurCol < 1 THEN CurCol = 1: GOTO KeyProcess CASE CHR$(0) + CHR$(73) ' <PgUp> SeekEl = SeekEl - 24 IF SeekEl < 1 THEN SeekEl = 1 CASE CHR$(0) + CHR$(81) ' <PgDn> SeekEl = SeekEl + 24 IF SeekEl > NumLines THEN SeekEl = NumLines - 23: GOTO KeyProcess END IF CASE CHR$(0) + CHR$(71) ' <Home> SeekEl = 1 CASE CHR$(0) + CHR$(79) ' <End> SeekEl = NumLines - 23 IF SeekEl < 1 THEN SeekEl = 1: GOTO KeyProcess CASE ELSE GOTO KeyProcess END SELECT RETURN --- * Origin: Night Shift BBS (314)635-7588 HST 14.4 (1:289/15)
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