fb:porticula NoPaste
Eingaberoutine für QB
Uploader: | Sebastian |
Datum/Zeit: | 24.03.2008 12:12:13 |
DECLARE SUB INPUTEXT (Prompt$, Var$)
'Beispiel fr eine Eingaberoutine, die sich die letzten Eingaben "merkt"
'und bei Druck auf PFEIL-HOCH als Eingabevorschlag wiederherstellt
'----
'von Sebastian Steiner, 24.03.2008. (Fr QBasic)
'----
'Der Quelltext kann frei verwendet werden, es wird jedoch keine Haftung
'fr seine Richtigkeit bernommen.
DIM SHARED StoredInput$(1 TO 5), SICount%
CLS
INPUTEXT "Eingabe 1: ", v$
INPUTEXT "Eingabe 2: ", c$
INPUTEXT "Eingabe 3: ", e$
PRINT "Fertig."
SLEEP
END
SUB INPUTEXT (Prompt$, Var$)
PRINT Prompt$;
Y% = CSRLIN
StartX% = POS(StartY%)
x% = StartX%
PRINT ""
e$ = ""
SI% = UBOUND(StoredInput$)
DO
k$ = INKEY$
IF k$ <> "" THEN
SELECT CASE k$
CASE CHR$(8)
IF LEN(e$) = 0 THEN
BEEP
ELSE
e$ = LEFT$(e$, LEN(e$) - 1)
LOCATE Y%, StartX%: PRINT e$; " "
x% = x% - 1
END IF
CASE CHR$(10), CHR$(13)
Prompt$ = e$
FOR i% = 1 TO UBOUND(StoredInput$) - 1
StoredInput$(i%) = StoredInput$(i% + 1)
NEXT i%
StoredInput$(UBOUND(StoredInput$)) = e$
IF SICount% < UBOUND(StoredInput$) THEN SICount% = SICount% + 1
EXIT SUB
CASE CHR$(0) + CHR$(72)
FOR i% = SI% TO 1 STEP -1
IF StoredInput$(i%) <> "" THEN
LenOld% = LEN(e$)
IF LEN(StoredInput$(i%)) < LenOld% THEN
App$ = STRING$((LenOld% - LEN(StoredInput$(i%))), 32)
ELSE
App$ = ""
END IF
LOCATE Y%, StartX%: PRINT StoredInput$(i%); App$
e$ = StoredInput$(i%)
EXIT FOR
END IF
NEXT i%
SI% = SI% - 1
IF SI% < (UBOUND(StoredInput$) - SICount% + 1) THEN SI% = UBOUND(StoredInput$)
CASE ELSE
IF LEN(k$) = 1 THEN
IF ASC(k$) > 31 THEN
e$ = e$ + k$
x% = x% + 1
LOCATE Y%, StartX%: PRINT e$
END IF
END IF
END SELECT
END IF
LOOP
END SUB