home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma91.dms / ma91.adf / Choice / Choice.e < prev    next >
Text File  |  1997-07-16  |  2KB  |  61 lines

  1. OPT OSVERSION=37
  2. OPT REG=5
  3.  
  4. MODULE 'dos/var'
  5.  
  6. ENUM BAD_ARG=1, MANY_CHAR, MANY_INPUT, ERR_VAR
  7.  
  8. PROC main() HANDLE
  9.  DEF myargs:PTR TO LONG, rdargs=0, znaki[10]:STRING, input[10]:STRING,
  10.      loop, pozycja=-1, var[2]:STRING
  11.  
  12.  VOID '$VER: Choice 2.0 (1997.07.15)'
  13.  
  14.  myargs := [0,0]                             ->lista argumentów
  15.  IF (rdargs:=ReadArgs('KEY/A,COM/S', myargs, NIL) ) <> NIL
  16.    ->czy znaków do rozpoznawania nie za duûo
  17.    IF StrLen(myargs[0]) > 10 THEN Raise (MANY_CHAR)
  18.  
  19.    StrCopy(znaki, myargs[0])
  20.    IF myargs[1] THEN WriteF('\t\e[33m\e[1mWybierz klawisz - \s\e[0m\n', znaki)
  21.    ->
  22.    ->wprowadzenie z klawiatury znaków rozpoznawanych przez komende
  23.    WriteF('\t\e[34m')
  24.    ReadStr(stdin, input)
  25.    WriteF('\e[0m')
  26.    ->sprawdzenie czy urzytkownik nie wprowadziî wiecej niû jeden znak
  27.    IF EstrLen(input) > 1 THEN Raise (MANY_INPUT)
  28.  
  29.    FOR loop := 0 TO EstrLen(znaki) - 1
  30.      ->
  31.      IF (pozycja := InStr(znaki, input) ) <> -1
  32.        ->WriteF('Pozycja = \d\n', pozycja + 1)
  33.      ENDIF
  34.      EXIT (pozycja <> -1)  ->dalej nie szukaê gdy znak zostal znaleziony
  35.    ENDFOR
  36.    INC pozycja
  37.  
  38.    StringF(var, '\d', pozycja)
  39.    IF ( SetVar ('num', var, 1, GVF_LOCAL_ONLY) ) = NIL THEN Raise(ERR_VAR)
  40.    
  41.  ELSE
  42.    Raise (BAD_ARG)
  43.  ENDIF
  44.   ->
  45.  EXCEPT DO
  46.    IF rdargs THEN FreeArgs(rdargs)
  47.  
  48.    IF exception
  49.      SELECT exception
  50.        CASE MANY_CHAR
  51.          WriteF('Pierwszy argument zawiera za duûo liter\n')
  52.        CASE MANY_INPUT
  53.          WriteF('Z klawiatury moûesz wprowadziê tylko jeden znak !!!\n')
  54.        CASE BAD_ARG
  55.          WriteF('Zîe argumenty\n')
  56.        CASE ERR_VAR
  57.          WriteF('Bîâd funkcji SetVar()\n')
  58.      ENDSELECT
  59.    ENDIF
  60. ENDPROC
  61.