Question Of The Day!

 BBS: Inland Empire Archive
Date: 05-12-92 (21:02)             Number: 11
From: DON KROUSE                   Refer#: NONE
  To: RONALD DERKIS                 Recvd: NO  
Subj: Question Of The Day!           Conf: (2) Quik_Bas
RD>How do you pull the dir from the current drive and load
RD>it into a array with
RD>out it apearing on the screen? A simple question but one that has puzzeled
RD>everyone!

It's not very elegant, but I think it'll do what you want. Let me know.
Append the long line that ends with "_" to the line above it.
Don
====================================== cut
====================================
DEFINT A-Z
DECLARE FUNCTION GetFileCount& (filespec$)
DECLARE SUB PrintFast (Rows%, Col%, Msg$, atrib%)
TYPE DirType
   FileName AS STRING * 8
   FileExt  AS STRING * 5
   FileSize AS LONG
END TYPE
DIM Info(100) AS DirType
CLS
FOR x = 1 TO 25 '---- Fill screen with a pattern
   PrintFast x, 1, STRING$(80, "X"), 31
NEXT x
PrintFast 6, 15, "  Enter the file and path spec                      ", 95
LOCATE 6, 46: COLOR 14, 5: INPUT ; filespec$
'---- Shell to dos and redirect a directory into a file
SHELL "dir " + filespec$ + ">dir.txt"
'---- Open the file
OPEN "C:\bc7\bin\dir.txt" FOR INPUT AS #1
total# = 0: count = 1
'---- Get info from the file into an array of variables
DO WHILE NOT EOF(1)
   LINE INPUT #1, DirInfo$
   Info(count).FileName = MID$(DirInfo$, 1, 8)
   Info(count).FileExt = MID$(DirInfo$, 10, 3)
   IF MID$(DirInfo$, 14, 5) = "<DIR>" THEN
      Info(count).FileExt = "<DIR>"
      Info(count).FileSize = 0
   ELSE
      Info(count).FileExt = MID$(DirInfo$, 10, 3)
      Info(count).FileSize = VAL(MID$(DirInfo$, 13, 10))
   END IF
'---- Keep a running total of file sizes
   total# = total# + Info(count).FileSize
   count = count + 1
LOOP
CLOSE #1
PrintFast 14, 5, "The screen should not have changed while the DIR info_
 was being obtained", 46
PrintFast 14, 23, "NOT", 202
PrintFast 25, 22, "Press any key to display the directory", 206
SLEEP  ' wait until a key is pressed before printing DIR information
CLS
'---- Print the directory info to the screen
PRINT "Directory of "; filespec$
PRINT
FOR i = 6 TO count - 2
   PRINT Info(i).FileName; " ";
   PRINT Info(i).FileExt;
   PRINT USING "     ########,"; Info(i).FileSize
NEXT i
PRINT "                ------------"
PRINT USING "Total             #########, bytes"; total#

SUB PrintFast (Rows%, Col%, Msg$, atrib%)
place% = ((((Rows - 1) * 80) + Col) - 1) * 2
DEF SEG = &HB800
FOR i = 1 TO LEN(Msg$)
   POKE place%, ASC(MID$(Msg$, i, 1))
   POKE place% + 1, atrib
   place% = place% + 2
NEXT i
DEF SEG
END SUB
---
 * Origin: Silver Lake Systems * Bothell, WA (1:343/58)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET