home *** CD-ROM | disk | FTP | other *** search
- OPT OSVERSION=37
- OPT REG=5
-
- MODULE 'dos/var'
-
- ENUM BAD_ARG=1, MANY_CHAR, MANY_INPUT, ERR_VAR
-
- PROC main() HANDLE
- DEF myargs:PTR TO LONG, rdargs=0, znaki[10]:STRING, input[10]:STRING,
- loop, pozycja=-1, var[2]:STRING
-
- VOID '$VER: Choice 2.0 (1997.07.15)'
-
- myargs := [0,0] ->lista argumentów
- IF (rdargs:=ReadArgs('KEY/A,COM/S', myargs, NIL) ) <> NIL
- ->czy znaków do rozpoznawania nie za duûo
- IF StrLen(myargs[0]) > 10 THEN Raise (MANY_CHAR)
-
- StrCopy(znaki, myargs[0])
- IF myargs[1] THEN WriteF('\t\e[33m\e[1mWybierz klawisz - \s\e[0m\n', znaki)
- ->
- ->wprowadzenie z klawiatury znaków rozpoznawanych przez komende
- WriteF('\t\e[34m')
- ReadStr(stdin, input)
- WriteF('\e[0m')
- ->sprawdzenie czy urzytkownik nie wprowadziî wiecej niû jeden znak
- IF EstrLen(input) > 1 THEN Raise (MANY_INPUT)
-
- FOR loop := 0 TO EstrLen(znaki) - 1
- ->
- IF (pozycja := InStr(znaki, input) ) <> -1
- ->WriteF('Pozycja = \d\n', pozycja + 1)
- ENDIF
- EXIT (pozycja <> -1) ->dalej nie szukaê gdy znak zostal znaleziony
- ENDFOR
- INC pozycja
-
- StringF(var, '\d', pozycja)
- IF ( SetVar ('num', var, 1, GVF_LOCAL_ONLY) ) = NIL THEN Raise(ERR_VAR)
-
- ELSE
- Raise (BAD_ARG)
- ENDIF
- ->
- EXCEPT DO
- IF rdargs THEN FreeArgs(rdargs)
-
- IF exception
- SELECT exception
- CASE MANY_CHAR
- WriteF('Pierwszy argument zawiera za duûo liter\n')
- CASE MANY_INPUT
- WriteF('Z klawiatury moûesz wprowadziê tylko jeden znak !!!\n')
- CASE BAD_ARG
- WriteF('Zîe argumenty\n')
- CASE ERR_VAR
- WriteF('Bîâd funkcji SetVar()\n')
- ENDSELECT
- ENDIF
- ENDPROC
-