'=========================================================================== ' Subject: TINY LIMITED INPUT Date: 10/15/92 (00:00) ' Author: Walton Dell Code: QB, QBasic, PDS ' Keys: TINY,LIMITED,INPUT Packet: TEXT.ABC '=========================================================================== '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 'Based on TINYINPU.BAS by Walton Dell - 10/15/92 'A small input routine that allows limited length input. '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DEFINT A-Z DECLARE FUNCTION TinyInput$ (Original$, Length, AutoCap, Allowed$) CLS COLOR , 1 What$ = TinyInput$("Hello", 12, 0, "") PRINT What$ FUNCTION TinyInput$ (Original$, Length, AutoCap, Allowed$) Row = POS(0): CursorPos = CSRLIN LOCATE Row, CursorPos, 1 PRINT Original$ + SPACE$(Length - LEN(Original$)); LOCATE , CursorPos + LEN(Original$): Total$ = Original$ DO DO Ky$ = INKEY$ LOOP UNTIL Ky$ <> "" IF AutoCap THEN Ky$ = UCASE$(Ky$) SELECT CASE ASC(Ky$) 'integer compares are faster than 'string compares CASE 13 ' time to go TinyInput$ = Total$ 'Function returns our string LOCATE , , 0: EXIT DO 'off cursor; exit loop to exit function CASE 8 'Backspace IF LEN(Total$) THEN Total$ = LEFT$(Total$, LEN(Total$) - 1) LOCATE , CursorPos: PRINT Total$ + " "; LOCATE , POS(0) - 1 CASE 27 'Escape (doesn't exit??) Total$ = "": LOCATE , CursorPos PRINT SPACE$(Length); : LOCATE , CursorPos CASE 1 TO 8, 11 TO 255 'all other keys (exc. tab & lf) IF AutoCap THEN Ky$ = UCASE$(Ky$) IF LEN(Allowed$) THEN IF INSTR(Allowed$, Ky$) = 0 THEN Ky$ = "" END IF IF LEN(Ky$) AND LEN(Total$) < Length THEN Total$ = Total$ + Ky$ PRINT Ky$; END IF END SELECT LOOP END FUNCTION