BBS: Inland Empire Archive Date: 01-03-93 (00:21) Number: 346 From: VICTOR YIU Refer#: NONE To: IMRAN HAYAT Recvd: NO Subj: GetInput 1/3 Conf: (2) Quik_Bas
-=> Quoting David Wang to Imran Hayat <=-
IH> Another little question! In QBasic, how can you limit the
IH> amount that the cursor can travel in an INPUT statement? In
Here's what you are looking for. Maybe just a little OVERdone...
It is an excellent replacement!
----------------------------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
>>>>>>>>---------- continued on next message...
... Restroom meter: [......../] Aaarhgh. I've got to go!!!
--- Blue Wave/RA v2.10 [NR]
* Origin: Hard Disc Cafe / Houston Texas / (713) 589-2690
/ RA 1.11 / (1:106/30.0)

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