home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 08 / einsteig / newinp_a.bas < prev    next >
BASIC Source File  |  1990-05-14  |  9KB  |  245 lines

  1. 1  '------------ newinp_a.bas
  2. 5  REM *****************************************************
  3. 15 REM                EINGABEROUTINE ab 60000
  4. 25 REM Testprogramm hierfür = Zeilen bis 325
  5. 35 REM ****************************************************
  6. 45 :
  7. 55 GOSUB 61000                   'INITIALISIERUNG
  8. 65 :
  9. 75 REM************* TESTBEDINGUNGEN SETZEN ****************
  10. 95 ZEILE = 5                     'EINGABEZEILE
  11. 105 SPALTE = 10                  'EINGABESPALTE
  12. 115 LAENGE = 40                  'LAENGE DES EINGABESTRINGS
  13. 125 ERLAUBT$ = ZAHLEN$           'ERLAUBTE ZEICHEN
  14. 135 WORT$ = "-1234567890.12345"  'VORGABE
  15. 140 VWORT$ = WORT$               'SICHERN FÜR ESC
  16. 145 :
  17. 155 CLS
  18. 165 :
  19. 175 GOSUB 60000                  'EINGABEROUTINE
  20. 185 :
  21. 195 REM ******************** RÜCKGABE AUSGEBEN ************
  22. 205 PRINT
  23. 215 LOCATE ZEILE + 3, SPALTE
  24. 225 PRINT "DER ZURÜCKGEGEBENE STRING IST: ";
  25. 235 COLOR 0, 7               'INVERSDARSTELLUNG EIN
  26. 245 LOCATE ZEILE + 4, SPALTE
  27. 255 PRINT WORT$
  28. 265 COLOR 7, 0               'INVERSDARSTELLUNG AUS
  29. 275 PRINT
  30. 285 :
  31. 295 END
  32. 305 :
  33. 315 REM ******************** TESTPROGRAMM ENDE ************
  34. 325 :
  35. 60000 REM *************************************************
  36. 60005 REM                   EINGABEROUTINE
  37. 60010 REM *************************************************
  38. 60015 :
  39. 60020 REM ***************** SCHLEIFENVORLAUF **************
  40. 60025 :
  41. 60030 REM ***************** VORBESETZUNGEN ****************
  42. 60035 :
  43. 60037 CURSOR = 7                    'CURSORGRÖSSE FESTLEGEN
  44. 60040 ANFANG = 1                    'CURSOR-ANFANGSPOSITION
  45. 60045 EINF = 0                      'UEBERSCHREIBMODUS EIN
  46. 60050 IF ERLAUBT$ = ZAHLEN$ THEN NUMERISCH = 1
  47.       ELSE NUMERISCH = 0
  48. 60055 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
  49. 60060 'VORGABE ERSTELLEN
  50. 60065 WORT$ = WORT$ + STRING$(LAENGE - LEN(WORT$), " ")
  51. 60067 IF INSTR(WORT$, ".") <> 0 THEN KOMMA = 1
  52.       ELSE KOMMA = 0
  53. 60068 IF INSTR(WORT$, "+") <> 0 OR INSTR(WORT$, "-") <> 0
  54.       THEN VORZEICHEN = 1 ELSE VORZEICHEN = 0
  55. 60070 COLOR 0, 7                   'INVERSE DARSTELLUNG EIN
  56. 60075 PRINT WORT$                  'VORGABE AUSGEBEN
  57. 60080 :
  58. 60085 REM ***************** EINGABESCHLEIFE ***************
  59. 60090 :
  60. 60095 EINGABESCHLEIFE = 1
  61. 60100 WHILE EINGABESCHLEIFE = 1
  62. 60105       LOCATE ZEILE, SPALTE + ANFANG - 1, 1, 6, CURSOR
  63. 60110       A$ = ""
  64. 60115       WHILE A$ = ""
  65. 60120           A$ = INKEY$
  66. 60125       WEND
  67. 60130       'RETURN
  68. 60135       IF A$ = ENDE$ THEN EINGABESCHLEIFE = 0
  69. 60137       'ESC
  70. 60138       IF A$ = ESC$ THEN EINGABESCHLEIFE = 0:
  71.             WORT$ = VWORT$: LOCATE ZEILE, SPALTE:
  72.             PRINT SPACE$(LAENGE): LOCATE ZEILE, SPALTE
  73.             PRINT WORT$
  74. 60140       'UNGÜLTIGE ZEICHEN
  75. 60145       IF LEN(A$) = 1 AND INSTR(ERLAUBT$, A$) = 0 AND
  76.             ASC(LEFT$(A$, 1)) <> 8 AND A$ <> ENDE$ AND
  77.             A$ <> ESC$ THEN PRINT CHR$(7)
  78. 60150       'GÜLTIGE ZEICHEN
  79. 60155       IF LEN(A$) = 1 AND INSTR(ERLAUBT$, A$) <> 0
  80.             THEN GOSUB 60250    'ZEICHEN VERARBEITEN
  81. 60160       IF ASC(LEFT$(A$, 1)) = 8 THEN GOSUB 60485
  82.             'BACKSPACE
  83. 60165       IF LEN(A$) = 2 THEN ON INSTR(STEUER$,
  84.             RIGHT$(A$, 1)) GOSUB 60360, 60385, 60400,
  85.             60425, 60450, 60530:
  86. 60167       'Unterprogramme für verschiedene Steuertasten
  87. 60170       LOCATE , , 1, 6, CURSOR
  88. 60175 WEND
  89. 60180 :
  90. 60185 REM ****************** SCHLEIFENNACHLAUF ************
  91. 60190 :
  92. 60195 REM ***** LEERZEICHEN AM STRINGENDE ENTFERNEN *******
  93. 60200 :
  94. 60205 WHILE RIGHT$(WORT$, 1) = " " AND LEN(WORT$) <> 0
  95. 60210       WORT$ = LEFT$(WORT$, LEN(WORT$) - 1)
  96. 60215 WEND
  97. 60220 LOCATE , , 1, 6, CURSOR
  98. 60225 COLOR 7, 0              'INVERSDARSTELLUNG AUS
  99. 60230 RETURN                  'RÜCKSPRUNG ZUM HAUPTPROGRAMM
  100. 60235 :
  101. 60240 REM******************* ZEICHENEINGABE ***************
  102. 60245 :
  103. 60250 IF EINF = 1 THEN GOSUB 60305 ELSE GOSUB 60265
  104. 60255 RETURN
  105. 60260 :
  106. 60265 REM *** ÜBERSCHREIBMODUS TEXT ****
  107. 60270 :
  108. 60275 IF NUMERISCH = 1 THEN GOSUB 60560: RETURN
  109.       'ÜBERSCHREIBEN ZAHLEN
  110. 60276 IF NUMERISCH = 0 THEN MID$(WORT$, ANFANG, 1) = A$
  111.       'ZEICHEN DURCH EINGABE ERSETZEN
  112. 60280 LOCATE ZEILE, SPALTE + ANFANG - 1, 1, 6, CURSOR
  113. 60285 PRINT A$
  114. 60290 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
  115. 60295 RETURN
  116. 60300 :
  117. 60305 REM *** EINFÜGEMODUS TEXT ****
  118. 60310 :
  119. 60315 IF RIGHT$(WORT$, 1) <> " " THEN PRINT CHR$(7): RETURN
  120. 60320 IF NUMERISCH = 1 THEN GOSUB 60610: RETURN
  121.       'EINFÜGEN ZAHLEN
  122. 60321 IF NUMERISCH = 0 THEN WORT$ = LEFT$(WORT$, ANFANG - 1)
  123.       + A$ + MID$(WORT$, ANFANG, LEN(WORT$) - ANFANG)
  124.       'ZEICHEN EINFUEGEN
  125. 60325 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
  126. 60330 PRINT WORT$
  127. 60335 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
  128. 60340 RETURN
  129. 60345 :
  130. 60350 REM *** CURSOR RECHTS TASTE *****
  131. 60355 :
  132. 60360 IF ERLAUBT$ <> ZAHLEN$ THEN IF ANFANG < LAENGE THEN
  133.       ANFANG = ANFANG + 1: RETURN ELSE BEEP: RETURN
  134. 60361 IF MID$(WORT$, ANFANG, 1) = " " THEN BEEP ELSE
  135.       IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1 ELSE BEEP
  136. 60365 RETURN
  137. 60370 :
  138. 60375 REM *** CURSOR LINKS TASTE ******
  139. 60380 :
  140. 60385 IF ANFANG > 1 THEN ANFANG = ANFANG - 1
  141.       ELSE BEEP
  142. 60390 RETURN
  143. 60395 :
  144. 60400 REM *** HOME TASTE ***
  145. 60405 :
  146. 60410 ANFANG = 1          'CURSOR AN DEN ANFANG DER EINGABE
  147. 60415 RETURN
  148. 60420 :
  149. 60425 REM *** END TASTE ****
  150. 60430 :
  151. 60435 IF ERLAUBT$ <> ZAHLEN$ THEN ANFANG = LAENGE: RETURN
  152. 60436 FOR I = ANFANG TO LAENGE
  153. 60437   IF MID$(WORT$, I, 1) = " " THEN ANFANG = I:
  154.         I = LAENGE ELSE ANFANG = I
  155. 60438 NEXT I
  156. 60440 RETURN
  157. 60445 :
  158. 60450 REM *** DELETE TASTE ****
  159. 60455 :
  160. 60457 LOESCH$ = MID$(WORT$, ANFANG, 1)
  161. 60460 WORT$ = LEFT$(WORT$, ANFANG - 1) + RIGHT$(WORT$,
  162.       LAENGE - ANFANG) + " "           'STRING KORRIGIEREN
  163. 60461 IF NUMERISCH = 1 AND LOESCH$ = "." THEN KOMMA = 0
  164. 60462 IF NUMERISCH = 1 AND (LOESCH$ = "+" OR LOESCH$ = "-")
  165.       THEN VORZEICHEN = 0
  166. 60465 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
  167. 60470 PRINT WORT$
  168. 60475 RETURN
  169. 60480 :
  170. 60485 REM****BACKSPACE TASTE******
  171. 60490 :
  172. 60495 IF ANFANG = 1 THEN PRINT CHR$(7): RETURN
  173.       'SCHON AM ANFANG
  174. 60497 LOESCH$ = MID$(WORT$, ANFANG - 1, 1):
  175. 60500 WORT$ = LEFT$(WORT$, ANFANG - 2) + RIGHT$(WORT$,
  176.       LAENGE - ANFANG + 1) + " "       'STRING KORRIGIEREN
  177. 60501 IF NUMERISCH = 1 AND LOESCH$ = "." THEN KOMMA = 0
  178. 60502 IF NUMERISCH = 1 AND (LOESCH$ = "+" OR LOESCH$ = "-")
  179.       THEN VORZEICHEN = 0
  180. 60505 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
  181. 60510 PRINT WORT$
  182. 60515 ANFANG = ANFANG - 1    'ZEICHENPOSITION AKTUALISIEREN
  183. 60520 RETURN
  184. 60525 :
  185. 60530 REM*****INS TASTE********
  186. 60535 :
  187. 60540 EINF = EINF XOR 1      'EINF UMSCHALTEN
  188. 60545 IF CURSOR = 7 THEN CURSOR = 12 ELSE CURSOR = 7
  189. 60550 RETURN
  190. 60555 :
  191. 60560 REM *** ÜBERSCHREIBMODUS ZAHLEN ***
  192. 60565 :
  193. 60570 IF (A$ = "+" OR A$ = "-") AND ANFANG > 1 THEN PRINT
  194.       CHR$(7): RETURN
  195. 60572 IF (A$ = "+" OR A$ = "-") AND ANFANG = 1 THEN
  196.       VORZEICHEN = 1
  197. 60575 IF (A$ = "," OR A$ = ".") AND KOMMA = 1 THEN PRINT
  198.       CHR$(7): RETURN
  199. 60577 IF (A$ = "," OR A$ = ".") AND KOMMA = 0 THEN A$ = "."
  200.       : KOMMA = 1
  201. 60580 MID$(WORT$, ANFANG, 1) = A$
  202.       'ZEICHEN DURCH EINGABE ERSETZEN
  203. 60585 LOCATE ZEILE, SPALTE + ANFANG - 1, 1, 6, CURSOR
  204. 60590 PRINT A$
  205. 60595 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
  206. 60600 RETURN
  207. 60605 :
  208. 60610 REM *** EINFÜGEMODUS ZAHLEN ****
  209. 60615 :
  210. 60620 IF (A$ = "+" OR A$ = "-") AND ANFANG > 1 THEN PRINT
  211.       CHR$(7): RETURN
  212. 60621 IF (A$ = "+" OR A$ = "-") AND ANFANG = 1 AND
  213.       VORZEICHEN = 1 THEN PRINT CHR$(7): RETURN
  214. 60622 IF (A$ = "+" OR A$ = "-") AND ANFANG = 1 THEN
  215.       VORZEICHEN = 1
  216. 60623 IF (A$ = "," OR A$ = ".") AND KOMMA = 1 THEN PRINT
  217.       CHR$(7): RETURN
  218. 60625 IF (A$ = "," OR A$ = ".") AND KOMMA = 0 THEN A$ = "."
  219.       : KOMMA = 1
  220. 60630 WORT$ = LEFT$(WORT$, ANFANG - 1) + A$ + MID$(WORT$,
  221.       ANFANG, LEN(WORT$) - ANFANG)       'ZEICHEN EINFUEGEN
  222. 60635 LOCATE ZEILE, SPALTE, 1, 6, CURSOR
  223. 60640 PRINT WORT$
  224. 60645 IF ANFANG < LAENGE THEN ANFANG = ANFANG + 1
  225. 60650 RETURN
  226. 60655 :
  227. 61000 REM*********************INITIALISIERUNG**************
  228. 61005 :
  229. 61010 STEUER$ = CHR$(77) + CHR$(75) + CHR$(71) + CHR$(79)
  230.       + CHR$(83) + CHR$(82)  'STEUERZEICHEN
  231. 61015 ABSCHLUSS$ = CHR$(13)
  232.       'RETURN IST ABSCHLUSS DER EINGABE
  233. 61016 ESC$ = CHR$(27)
  234. 61020 ENDE$ = ABSCHLUSS$
  235. 61025 ZAHLEN$ = "1234567890+-.,"  'ZEICHEN FÜR ZAHLENEINGABE
  236. 61030 BUCHSTABEN$ = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM"
  237.       NOPQRSTUVW äöüÄÖÜß"
  238. 61035 SONDER$ = " !$%&/()=?[]{}µ|ⁿ²'`*,.-:;_<>\+-^°@~"
  239.       + CHR$(34)
  240. 61040 ALLE$ = ""
  241. 61041 FOR I = 1 TO 255
  242. 61042   IF I <> 13 AND I <> 27 THEN ALLE$ = ALLE$ + CHR$(I)
  243. 61043 NEXT I
  244. 61045 RETURN
  245.