home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1990
/
08
/
einsteig
/
newinp_a.bas
< prev
next >
Wrap
BASIC Source File
|
1990-05-14
|
9KB
|
245 lines
1 '------------ newinp_a.bas
5 REM *****************************************************
15 REM EINGABEROUTINE ab 60000
25 REM Testprogramm hierfür = Zeilen bis 325
35 REM ****************************************************
45 :
55 GOSUB 61000 'INITIALISIERUNG
65 :
75 REM************* TESTBEDINGUNGEN SETZEN ****************
95 ZEILE = 5 'EINGABEZEILE
105 SPALTE = 10 'EINGABESPALTE
115 LAENGE = 40 'LAENGE DES EINGABESTRINGS
125 ERLAUBT$ = ZAHLEN$ 'ERLAUBTE ZEICHEN
135 WORT$ = "-1234567890.12345" 'VORGABE
140 VWORT$ = WORT$ 'SICHERN FÜR ESC
145 :
155 CLS
165 :
175 GOSUB 60000 'EINGABEROUTINE
185 :
195 REM ******************** RÜCKGABE AUSGEBEN ************
205 PRINT
215 LOCATE ZEILE + 3, SPALTE
225 PRINT "DER ZURÜCKGEGEBENE STRING IST: ";
235 COLOR 0, 7 'INVERSDARSTELLUNG EIN
245 LOCATE ZEILE + 4, SPALTE
255 PRINT WORT$
265 COLOR 7, 0 'INVERSDARSTELLUNG AUS
275 PRINT
285 :
295 END
305 :
315 REM ******************** TESTPROGRAMM ENDE ************
325 :
60000 REM *************************************************
60005 REM EINGABEROUTINE
60010 REM *************************************************
60015 :
60020 REM ***************** SCHLEIFENVORLAUF **************
60025 :
60030 REM ***************** VORBESETZUNGEN ****************
60035 :
60037 CURSOR = 7 'CURSORGRÖSSE FESTLEGEN
60040 ANFANG = 1 'CURSOR-ANFANGSPOSITION
60045 EINF = 0 'UEBERSCHREIBMODUS EIN
60050 IF ERLAUBT$ = ZAHLEN$ THEN NUMERISCH = 1
ELSE NUMERISCH = 0
60055 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
60060 'VORGABE ERSTELLEN
60065 WORT$ = WORT$ + STRING$(LAENGE - LEN(WORT$), " ")
60067 IF INSTR(WORT$, ".") <> 0 THEN KOMMA = 1
ELSE KOMMA = 0
60068 IF INSTR(WORT$, "+") <> 0 OR INSTR(WORT$, "-") <> 0
THEN VORZEICHEN = 1 ELSE VORZEICHEN = 0
60070 COLOR 0, 7 'INVERSE DARSTELLUNG EIN
60075 PRINT WORT$ 'VORGABE AUSGEBEN
60080 :
60085 REM ***************** EINGABESCHLEIFE ***************
60090 :
60095 EINGABESCHLEIFE = 1
60100 WHILE EINGABESCHLEIFE = 1
60105 LOCATE ZEILE, SPALTE + ANFANG - 1, 1, 6, CURSOR
60110 A$ = ""
60115 WHILE A$ = ""
60120 A$ = INKEY$
60125 WEND
60130 'RETURN
60135 IF A$ = ENDE$ THEN EINGABESCHLEIFE = 0
60137 'ESC
60138 IF A$ = ESC$ THEN EINGABESCHLEIFE = 0:
WORT$ = VWORT$: LOCATE ZEILE, SPALTE:
PRINT SPACE$(LAENGE): LOCATE ZEILE, SPALTE
PRINT WORT$
60140 'UNGÜLTIGE ZEICHEN
60145 IF LEN(A$) = 1 AND INSTR(ERLAUBT$, A$) = 0 AND
ASC(LEFT$(A$, 1)) <> 8 AND A$ <> ENDE$ AND
A$ <> ESC$ THEN PRINT CHR$(7)
60150 'GÜLTIGE ZEICHEN
60155 IF LEN(A$) = 1 AND INSTR(ERLAUBT$, A$) <> 0
THEN GOSUB 60250 'ZEICHEN VERARBEITEN
60160 IF ASC(LEFT$(A$, 1)) = 8 THEN GOSUB 60485
'BACKSPACE
60165 IF LEN(A$) = 2 THEN ON INSTR(STEUER$,
RIGHT$(A$, 1)) GOSUB 60360, 60385, 60400,
60425, 60450, 60530:
60167 'Unterprogramme für verschiedene Steuertasten
60170 LOCATE , , 1, 6, CURSOR
60175 WEND
60180 :
60185 REM ****************** SCHLEIFENNACHLAUF ************
60190 :
60195 REM ***** LEERZEICHEN AM STRINGENDE ENTFERNEN *******
60200 :
60205 WHILE RIGHT$(WORT$, 1) = " " AND LEN(WORT$) <> 0
60210 WORT$ = LEFT$(WORT$, LEN(WORT$) - 1)
60215 WEND
60220 LOCATE , , 1, 6, CURSOR
60225 COLOR 7, 0 'INVERSDARSTELLUNG AUS
60230 RETURN 'RÜCKSPRUNG ZUM HAUPTPROGRAMM
60235 :
60240 REM******************* ZEICHENEINGABE ***************
60245 :
60250 IF EINF = 1 THEN GOSUB 60305 ELSE GOSUB 60265
60255 RETURN
60260 :
60265 REM *** ÜBERSCHREIBMODUS TEXT ****
60270 :
60275 IF NUMERISCH = 1 THEN GOSUB 60560: RETURN
'ÜBERSCHREIBEN ZAHLEN
60276 IF NUMERISCH = 0 THEN MID$(WORT$, ANFANG, 1) = A$
'ZEICHEN DURCH EINGABE ERSETZEN
60280 LOCATE ZEILE, SPALTE + ANFANG - 1, 1, 6, CURSOR
60285 PRINT A$
60290 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
60295 RETURN
60300 :
60305 REM *** EINFÜGEMODUS TEXT ****
60310 :
60315 IF RIGHT$(WORT$, 1) <> " " THEN PRINT CHR$(7): RETURN
60320 IF NUMERISCH = 1 THEN GOSUB 60610: RETURN
'EINFÜGEN ZAHLEN
60321 IF NUMERISCH = 0 THEN WORT$ = LEFT$(WORT$, ANFANG - 1)
+ A$ + MID$(WORT$, ANFANG, LEN(WORT$) - ANFANG)
'ZEICHEN EINFUEGEN
60325 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
60330 PRINT WORT$
60335 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
60340 RETURN
60345 :
60350 REM *** CURSOR RECHTS TASTE *****
60355 :
60360 IF ERLAUBT$ <> ZAHLEN$ THEN IF ANFANG < LAENGE THEN
ANFANG = ANFANG + 1: RETURN ELSE BEEP: RETURN
60361 IF MID$(WORT$, ANFANG, 1) = " " THEN BEEP ELSE
IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1 ELSE BEEP
60365 RETURN
60370 :
60375 REM *** CURSOR LINKS TASTE ******
60380 :
60385 IF ANFANG > 1 THEN ANFANG = ANFANG - 1
ELSE BEEP
60390 RETURN
60395 :
60400 REM *** HOME TASTE ***
60405 :
60410 ANFANG = 1 'CURSOR AN DEN ANFANG DER EINGABE
60415 RETURN
60420 :
60425 REM *** END TASTE ****
60430 :
60435 IF ERLAUBT$ <> ZAHLEN$ THEN ANFANG = LAENGE: RETURN
60436 FOR I = ANFANG TO LAENGE
60437 IF MID$(WORT$, I, 1) = " " THEN ANFANG = I:
I = LAENGE ELSE ANFANG = I
60438 NEXT I
60440 RETURN
60445 :
60450 REM *** DELETE TASTE ****
60455 :
60457 LOESCH$ = MID$(WORT$, ANFANG, 1)
60460 WORT$ = LEFT$(WORT$, ANFANG - 1) + RIGHT$(WORT$,
LAENGE - ANFANG) + " " 'STRING KORRIGIEREN
60461 IF NUMERISCH = 1 AND LOESCH$ = "." THEN KOMMA = 0
60462 IF NUMERISCH = 1 AND (LOESCH$ = "+" OR LOESCH$ = "-")
THEN VORZEICHEN = 0
60465 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
60470 PRINT WORT$
60475 RETURN
60480 :
60485 REM****BACKSPACE TASTE******
60490 :
60495 IF ANFANG = 1 THEN PRINT CHR$(7): RETURN
'SCHON AM ANFANG
60497 LOESCH$ = MID$(WORT$, ANFANG - 1, 1):
60500 WORT$ = LEFT$(WORT$, ANFANG - 2) + RIGHT$(WORT$,
LAENGE - ANFANG + 1) + " " 'STRING KORRIGIEREN
60501 IF NUMERISCH = 1 AND LOESCH$ = "." THEN KOMMA = 0
60502 IF NUMERISCH = 1 AND (LOESCH$ = "+" OR LOESCH$ = "-")
THEN VORZEICHEN = 0
60505 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
60510 PRINT WORT$
60515 ANFANG = ANFANG - 1 'ZEICHENPOSITION AKTUALISIEREN
60520 RETURN
60525 :
60530 REM*****INS TASTE********
60535 :
60540 EINF = EINF XOR 1 'EINF UMSCHALTEN
60545 IF CURSOR = 7 THEN CURSOR = 12 ELSE CURSOR = 7
60550 RETURN
60555 :
60560 REM *** ÜBERSCHREIBMODUS ZAHLEN ***
60565 :
60570 IF (A$ = "+" OR A$ = "-") AND ANFANG > 1 THEN PRINT
CHR$(7): RETURN
60572 IF (A$ = "+" OR A$ = "-") AND ANFANG = 1 THEN
VORZEICHEN = 1
60575 IF (A$ = "," OR A$ = ".") AND KOMMA = 1 THEN PRINT
CHR$(7): RETURN
60577 IF (A$ = "," OR A$ = ".") AND KOMMA = 0 THEN A$ = "."
: KOMMA = 1
60580 MID$(WORT$, ANFANG, 1) = A$
'ZEICHEN DURCH EINGABE ERSETZEN
60585 LOCATE ZEILE, SPALTE + ANFANG - 1, 1, 6, CURSOR
60590 PRINT A$
60595 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
60600 RETURN
60605 :
60610 REM *** EINFÜGEMODUS ZAHLEN ****
60615 :
60620 IF (A$ = "+" OR A$ = "-") AND ANFANG > 1 THEN PRINT
CHR$(7): RETURN
60621 IF (A$ = "+" OR A$ = "-") AND ANFANG = 1 AND
VORZEICHEN = 1 THEN PRINT CHR$(7): RETURN
60622 IF (A$ = "+" OR A$ = "-") AND ANFANG = 1 THEN
VORZEICHEN = 1
60623 IF (A$ = "," OR A$ = ".") AND KOMMA = 1 THEN PRINT
CHR$(7): RETURN
60625 IF (A$ = "," OR A$ = ".") AND KOMMA = 0 THEN A$ = "."
: KOMMA = 1
60630 WORT$ = LEFT$(WORT$, ANFANG - 1) + A$ + MID$(WORT$,
ANFANG, LEN(WORT$) - ANFANG) 'ZEICHEN EINFUEGEN
60635 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
60640 PRINT WORT$
60645 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
60650 RETURN
60655 :
61000 REM*********************INITIALISIERUNG**************
61005 :
61010 STEUER$ = CHR$(77) + CHR$(75) + CHR$(71) + CHR$(79)
+ CHR$(83) + CHR$(82) 'STEUERZEICHEN
61015 ABSCHLUSS$ = CHR$(13)
'RETURN IST ABSCHLUSS DER EINGABE
61016 ESC$ = CHR$(27)
61020 ENDE$ = ABSCHLUSS$
61025 ZAHLEN$ = "1234567890+-.," 'ZEICHEN FÜR ZAHLENEINGABE
61030 BUCHSTABEN$ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM"
NOPQRSTUVW äöüÄÖÜß"
61035 SONDER$ = " !$%&/()=?[]{}µ|ⁿ²'`*,.-:;_<>\+-^°@~"
+ CHR$(34)
61040 ALLE$ = ""
61041 FOR I = 1 TO 255
61042 IF I <> 13 AND I <> 27 THEN ALLE$ = ALLE$ + CHR$(I)
61043 NEXT I
61045 RETURN