home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / pbc22b.zip / DIRVIEW.BAS < prev    next >
BASIC Source File  |  1993-01-11  |  3KB  |  91 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |       PBClone  Copyright (c) 1990-1993  Thomas G. Hanlin III         |
  4. '   |                                                                      |
  5. '   +----------------------------------------------------------------------+
  6.  
  7. ' This is another simple demo of the PBClone routines.  It loads an entire
  8. ' directory into memory and displays it.
  9.  
  10. ' Syntax:
  11. '   DIRVIEW filespec
  12.  
  13. ' The filespec may contain wildcards, of course.
  14.  
  15. ' Typically, this would be converted to an .EXE file using these steps:
  16. '    BC DIRVIEW/O;
  17. '    LINK DIRVIEW/EX,,NUL,PBCLONE;
  18.  
  19.    DECLARE FUNCTION ExplainFAttr$ (Attr%, AbbrevLevel%)
  20.    DECLARE SUB FileCount (File$, BYVAL FilAttr%, FilCount%, ErrCode%)
  21.    DECLARE FUNCTION Int2DateSt$ (DateNr%)
  22.    DECLARE FUNCTION Int2TimeSt$ (TimeNr%)
  23.    DECLARE SUB LoadDirAll (File$, BYVAL FilAttr%, BYVAL DSeg%, BYVAL DOfs%, ErrCode%)
  24.  
  25.    DECLARE SUB PrintComma (Number&, FieldLen%)
  26.  
  27.    TYPE DirType
  28.       FilAttr AS STRING * 1
  29.       FilTime AS INTEGER
  30.       FilDate AS INTEGER
  31.       FilSize AS LONG
  32.       FilName AS STRING * 12
  33.    END TYPE
  34.  
  35.    DEFINT A-Z
  36.  
  37.    Cmd$ = LTRIM$(RTRIM$(UCASE$(COMMAND$)))
  38.    IF LEN(Cmd$) = 0 OR INSTR(Cmd$, "/?") > 0 THEN
  39.       PRINT "DIRVIEW: View Directory Demo for PBClone by Thomas G. Hanlin III"
  40.       PRINT
  41.       PRINT "Syntax:"
  42.       PRINT "  DIRVIEW filespec
  43.       PRINT
  44.       PRINT "The filespec may contain wildcards."
  45.       END
  46.    END IF
  47.    IF LEN(Cmd$) THEN
  48.       File$ = Cmd$
  49.    ELSE
  50.       PRINT "Please provide a file specification."
  51.       END
  52.    END IF
  53.  
  54.    SeekAttr = 1 + 2 + 4 + 16
  55.    FileCount File$, SeekAttr, FilCount, ErrCode
  56.    IF ErrCode THEN
  57.       PRINT "Invalid filespec."
  58.       END
  59.    ELSEIF FilCount = 0 THEN
  60.       PRINT "No matching files."
  61.       END
  62.    END IF
  63.  
  64.    DIM FileList(1 TO FilCount) AS DirType
  65.    DSeg = VARSEG(FileList(1))
  66.    DOfs = VARPTR(FileList(1))
  67.    LoadDirAll File$, SeekAttr, DSeg, DOfs, ErrCode
  68.  
  69.    FOR tmp = 1 TO FilCount
  70.       PRINT FileList(tmp).FilName; "   ";
  71.       PrintComma FileList(tmp).FilSize, 14
  72.       PRINT "   "; Int2DateSt$(FileList(tmp).FilDate);
  73.       PRINT "   "; Int2TimeSt$(FileList(tmp).FilTime);
  74.       PRINT "   "; ExplainFAttr$(ASC(FileList(tmp).FilAttr), 2)
  75.    NEXT
  76.  
  77. SUB PrintComma (Number&, FieldLen)
  78.    N$ = LTRIM$(STR$(Number&))
  79.    R$ = ""
  80.    DO WHILE LEN(N$) > 3
  81.       R$ = RIGHT$(N$, 3) + "," + R$
  82.       N$ = LEFT$(N$, LEN(N$) - 3)
  83.    LOOP
  84.    IF LEN(N$) THEN R$ = N$ + "," + R$
  85.    IF RIGHT$(R$, 1) = "," THEN R$ = LEFT$(R$, LEN(R$) - 1)
  86.    IF LEN(R$) < FieldLen THEN
  87.       R$ = SPACE$(FieldLen - LEN(R$)) + R$
  88.    END IF
  89.    PRINT R$;
  90. END SUB
  91.