GETINPUT 1/2

 BBS: Inland Empire Archive
Date: 02-08-93 (17:35)             Number: 305
From: VICTOR YIU                   Refer#: NONE
  To: ERIC MAYS                     Recvd: NO  
Subj: GETINPUT    1/2                Conf: (2) Quik_Bas
Here's what you're looking for!

-!!!!!!!!!!!!!!!!!!!!!!!!!!-8<-!!!!!-8<-!-  snip here

' released into public domain
' +-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-+
' |  GetInput.bas                               by Victor Yiu |
' |  ~~~~~~~~~~~~                                             |
' |    A full functioned replacement for INPUT.  Includes     |
' |  full line editing:  insert, typeover, delete, home/end,  |
' |  and next/previous word.  Also lets you specify maximum   |
' |  line length, or let use input until end of line.         |
' |    The code is specially written for clarity and ease of  |
' |  understanding.  All of the code is optimized to the max  |
' |  that I know how.                                         |
' |    In essence, it is just a full line editor.             |
' |                                                           |
' |  Syntax:                                                  |
' |     In$ = GetInput$(Prompt$, MaxLen%)                     |
' |                                                           |
' |  Prompt$ is the prompt that you want to be displayed when |
' |             user is inputting data, like "Your name? "    |
' |  MaxLen  is the maximum length that you will allow the    |
' |             user to type in.  Use "0" or "-1" to input it |
' |             to the end of the screen                      |
' +-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-+

'  Declarations
DECLARE SUB Init ()
DECLARE SUB Alarm ()
DECLARE FUNCTION GetInput$ (Prompt$, MaxLen%)

DEFINT A-Z      ' use integers by default for speed
COMMON SHARED Null$           ' set up some initial keys:
COMMON SHARED LeftK$, RightK$ ' it is faster and clearer to use variables
COMMON SHARED Home$, End$     ' (A$, B$) instead of constants ("d",
COMMON SHARED Insert$, Delete$' "xyz", CHR$(3))
COMMON SHARED CLeft$, CRight$ ' --> MY BENCHMARKS CONFIRM IT <--
COMMON SHARED SpaceBar$

CONST False = 0, True = NOT False   ' set up boolean constants

    Null$ = CHR$(0)             ' define initial keys
    SpaceBar$ = " "
    Insert$ = Null$ + "R"
    Delete$ = Null$ + "S"

    LeftK$ = Null$ + "K": RightK$ = Null$ + "M"
    Home$ = Null$ + "G": End$ = Null$ + "O"
    CLeft$ = Null$ + "s": CRight$ = Null$ + "t"
CLS             ' clear screen
COLOR 7, 0      ' use white on black

In$ = GetInput$("Enter a string: ", -1)   ' input a string

PRINT
PRINT "You typed ["; In$; "]"

' +-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-+
' |  Alarm                                      by Victor Yiu |
' |  ~~~~~                                                    |
' |    Plays a tune                                           |
' +-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-+
SUB Alarm

    SOUND 1000, .1

END SUB

FUNCTION GetInput$ (Prompt$, MaxLen)

    IF MaxLen < 1 THEN MaxLen = 80 - LEN(Prompt$) - POS(0)
    ' 0 or -1 means all that will fit on the row
    ' Adjusts MaxLen to max. len to the end of the line if user
    ' passes in < 1
    PRINT Prompt$;      ' print prompt
    StartX = POS(0)     ' save cursor column, to use later as base
    Cursor = 1          ' init. cursor
    Insert = True       ' default mode: insert

    DO    ' start main loop
        IF Update THEN      ' True if something changed in input
            LOCATE , StartX, 0      ' locate at base
            PRINT Out$; SpaceBar$;        ' print input plus a space
            Update = False          ' reset flag
        END IF

        LOCATE , Cursor + StartX - 1, 1, (NOT Insert) * -7, 16
            ' locate cursor at end of text, with cursor on.
            ' cursor shape is dependent on insertion mode
        DO: I$ = INKEY$         ' wait for input
        LOOP UNTIL LEN(I$)      ' --> NOTE:
                                    ' using LEN(I$) is _MUCH_ faster than
                                    ' using I$ <> ""

>>>>> Continued on next message...

--- Blue Wave/RA v2.10 [NR]
 * Origin: Hard Disc Cafe / Houston Texas / (713) 589-2690 / (1:106/30.0)
Outer Court
Echo Basic Postings

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