home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / windows / baswind8.zip / TAGDIR.SUB < prev    next >
Text File  |  1990-09-14  |  6KB  |  122 lines

  1. '
  2. '
  3. '******************************************************************************
  4. '                    Function : TAGDIR                                        *
  5. '                                                                             *
  6. ' Purpose:                                                                    *
  7. '                                                                             *
  8. '                                                                             *
  9. ' Results:                                                                    *
  10. '                                                                             *
  11. ' Usage  :                                                                    *
  12. '                                                                             *
  13. '                                                                             *
  14. ' Date Written : 09/01/90 - Date Tested: 09/01/90 - Author: James P Morgan    *
  15. ' Date Modified:          -            :          -       :                   *
  16. '-----------------------------------------------------------------------------*
  17. ' NOTE:                                                                       *
  18. '******************************************************************************
  19. '                                                                             *
  20. '     SUB PROGRAM NAME          (PARAMETERS)                 STATIC/RECURSIVE *
  21. '-----------------------------------------------------------------------------*
  22. '                                                                             *
  23. SUB    TAGDIR(SEARCH$,SHOWITEMS%,FORE%,BACK%,HFORE%,HBACK%,QUADRANT$,SHADOW%,NUMTAGGED%,TAG$(1),RETURN.CODE%) STATIC
  24.  
  25.        DEFINT A-Z                               'make all short intergers by default
  26.  
  27.        RETURN.CODE%=0
  28.        DIR.RETURN.CODE%=0
  29.  
  30.        TAG.MIN%=LBOUND(TAG$)                     'adjust for callers OPTION BASE
  31.  
  32.        TAG.MAX=(UBOUND(TAG$)-TAG.MIN%)+1         'user reserved spaces for this many tagged filenames
  33.  
  34. '
  35. 'am not sure that FILES$ will be placed in FAR HEAP, since it is var. string array
  36. '
  37.  
  38. REM    $DYNAMIC                                  'allocate arrays off far heap
  39.        DIM FILES$(TAG.MIN% TO TAG.MIN%+1)        'make each one ONLY 1 element to start with
  40.        DIM TAGITEMS%(TAG.MIN% TO TAG.MIN%+1)     'make each one ONLY 1 element to start with
  41. REM    $STATIC                                   'default arrays back to Basics Data segment
  42.  
  43. TAGDIR.START:
  44.        ATTR=NUMFILES%
  45.  
  46.        COUNT=&HFF00 OR ATTR                     'Get number of filenames that match SEARCH$
  47.        I=INT(VARPTR(FILES$(TAG.MIN%)))
  48.  
  49.        CALL DIR(SEARCH$,I,COUNT,DIR.RETURN.CODE)
  50.  
  51.        IF (COUNT=-1) OR (COUNT = 0) THEN        'were any matching filenames found?
  52.             NUMFILES%=0                          'NO
  53.             RETURN.CODE%=-2
  54.             SELECTFILE$="No Files Found"
  55.          GOTO TAGDIR.DONE
  56.        END IF
  57.  
  58.        NUMFILES%=COUNT
  59.  
  60.        IF COUNT > 0 THEN                               're-allocate filename array big
  61.            REDIM FILES$(TAG.MIN% TO TAG.MIN%+COUNT)    'enough to hold all found
  62.            REDIM TAGITEMS%(TAG.MIN% TO TAG.MIN%+COUNT) 'make them same BASE as callers array
  63.        END IF
  64.  
  65.        HEADER$=SEARCH$                          'this was the search filename spec
  66.  
  67.        TEMPHDR$=SPACE$(16)
  68.        PAD=8-(LEN(HEADER$)/2)-.5
  69.        MID$(TEMPHDR$,PAD+1,LEN(HEADER$))=HEADER$
  70.        HEADER$=TEMPHDR$
  71.  
  72. '
  73.        FOR I=TAG.MIN% TO TAG.MIN%+COUNT             'make each filename array element
  74.            FILES$(I)=SPACE$(22)                     'big enough to hold a filename
  75.        NEXT
  76.  
  77.        COUNT=ATTR
  78.        I=INT(VARPTR(FILES$(TAG.MIN%)))              'point address of first element of the array
  79.  
  80.        CALL DIR(SEARCH$,I,COUNT,DIR.RETURN.CODE%)   'load the filenames into the array
  81.  
  82.        FOR J=TAG.MIN% TO TAG.MIN%+COUNT         'allow for room in front of filename
  83.            FILES$(J)="  "+FILES$(J)             'to 'tag' it
  84.        NEXT
  85.  
  86.        MAXITEMS%=COUNT                          'we have this many filenames to display
  87.        SHOWFILES=SHOWITEMS%                     'but only display this many at a time
  88.  
  89.        IF (NUMTAGGED%<1) OR (NUMTAGGED%>TAG.MAX) THEN
  90.            NUMTAGGED%=TAG.MAX                   'allow only this many to be tagged (all we have room for)
  91.        END IF
  92.  
  93.        CALL TAGLIST(HEADER$,SHOWITEMS%,MAXITEMS%,NUMTAGGED%,FILES$(),TAGITEMS%(),FORE%,BACK%,HFORE%,HBACK%,QUADRANT$,SHADOW%,RETURN.CODE%)
  94.  
  95.        IF NUMTAGGED%<1 THEN                     'did user 'tag' any filenames
  96.            GOTO TAGDIR.DONE                     'NO
  97.        ENDIF
  98.  
  99.        IF RETURN.CODE<0 THEN                    'did user 'tag' any filenames
  100.            GOTO TAGDIR.DONE                     'NO
  101.        ENDIF
  102.  
  103. '
  104. ' Return the filenames tagged.
  105. '
  106.        I=TAG.MIN%                               'base subscript for the array
  107.  
  108.        FOR J=TAG.MIN% TO TAG.MIN%+COUNT         'look at all the filenames
  109.            IF TAGITEMS%(J)=1 THEN               'was this one tagged?
  110.                TAG$(I)=MID$(FILES$(J),3)
  111.                I=I+1                            'keep count of the number we found tagged
  112.            END IF
  113.  
  114.        NEXT
  115.  
  116. TAGDIR.DONE:
  117.        ERASE FILES$                             'free memory allocated to arrays
  118.        ERASE TAGITEMS%
  119.        HEADER$=""
  120.        TEMPHDR$=""
  121. END SUB
  122.