home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix CD 2.0
/
Phoenix_CD.cdr
/
11a
/
dirchart.zip
/
DIRCHART.BAS
< prev
next >
Wrap
BASIC Source File
|
1988-09-22
|
4KB
|
115 lines
10 REM
20 REM DIRECTORY CHART PROGRAM
30 REM written by John P. Lytle
40 REM date written 07/28/88
50 REM
60 CLS: KEY OFF
70 CLEAR: COLOR 6, 1: FILE$ = "C:\TREE.LST"
80 ROW = 0: COL = 1
90 GOSUB 170
100 GOSUB 360
110 GOSUB 470
120 GOSUB 660
130 GOSUB 770
140 GOSUB 860
150 COLOR 7,0,0: END
160 REM
170 REM COUNT DIRECTORY PATHS
180 REM
190 CLS
200 OPEN "I", #1, FILE$, 80
210 LOCATE 12,5: PRINT "setting up...please wait"
220 WHILE NOT EOF(1)
230 INPUT #1, PATH$
240 PATH$ = PATH$ + " ": SW = 0
250 IF MID$(PATH$,1,5) = "Path:" THEN COL = 1: SW = 1: REC = REC + 1
260 IF MID$(PATH$,2,5) = "Path:" THEN COL = 1: SW = 1: REC = REC + 1
270 IF SW = 0 THEN 330
280 FOR X = 1 TO LEN(PATH$)
290 IF MID$(PATH$,X,1) = "\" THEN PATH$ = RIGHT$(PATH$, LEN(PATH$) - X): COL = COL + 1: GOTO 280
300 IF MID$(PATH$,X,1) = " " OR X = LEN(PATH$) THEN COL = COL + 1
310 IF COL > MCOL THEN MCOL = COL
320 NEXT X: PATH$ = " "
330 WEND
340 CLOSE #1: RETURN
350 REM
360 REM FILL ARRAYS WITH BLANKS
370 REM
380 REC = REC + 1: MCOL = MCOL + 1
390 DIM LEVL$(REC,MCOL), CHART$(REC,MCOL * 3)
400 FOR R = 1 TO REC: FOR C = 1 TO MCOL
410 LEVL$(R,C) = " "
420 NEXT C: NEXT R
430 FOR R = 1 TO REC: FOR C = 1 TO MCOL * 3
440 CHART$(R,C) = " "
450 NEXT C: NEXT R: RETURN
460 REM
470 REM GET DIRECTORY PATHS
480 REM
490 CLS: OPEN "I", #1, FILE$, 80
500 REC = 0: LOCATE 12,5: PRINT "reading directory paths..."
510 WHILE NOT EOF(1)
520 SW = 0
530 INPUT #1, PATH$
540 IF LEFT$(PATH$,9) = "DIRECTORY" THEN TITLE$ = PATH$
550 PATH$ = PATH$ + " "
560 IF MID$(PATH$,1,5) = "Path:" THEN ROW = ROW + 1: PATH$ = RIGHT$(PATH$, LEN(PATH$) - 7): COL = 1: SW = 1: REC = REC + 1
570 IF MID$(PATH$,2,5) = "Path:" THEN ROW = ROW + 1: PATH$ = RIGHT$(PATH$, LEN(PATH$) - 8): COL = 1: SW = 1: REC = REC + 1
580 IF SW = 0 THEN 630
590 FOR X = 1 TO LEN(PATH$)
600 IF MID$(PATH$,X,1) = "\" THEN LEVL$(ROW, COL) = LEFT$(PATH$, X - 1): PATH$ = RIGHT$(PATH$, LEN(PATH$) - X): LEVL$(ROW, COL) = LEVL$(ROW, COL) + STRING$(8 - LEN(LEVL$(ROW, COL)),32): COL = COL + 1: GOTO 590
610 IF MID$(PATH$,X,1) = " " OR X = LEN(PATH$) THEN LEVL$(ROW, COL) = LEFT$(PATH$,LEN(PATH$) - 1): LEVL$(ROW, COL) = LEVL$(ROW, COL) + STRING$(8 - LEN(LEVL$(ROW, COL)),32)
620 NEXT X: PATH$ = " "
630 WEND
640 CLOSE #1: RETURN
650 REM
660 REM CREATE DIRECTORY CHART
670 REM
680 CHART$(0,0) = "ROOT ": CHART$(0,1) = CHR$(191)
690 CLS: LOCATE 12,5: PRINT "creating directory chart..."
700 FOR C = 1 TO MCOL: FOR R = 1 TO REC
710 IF LEVL$(R,C) = " " THEN 750
720 IF LEVL$(R,C) = LEVL$(R - 1,C) THEN CHART$(R,C * 2) = CHR$(179): CHART$(R,C * 2 + 1) = " ": CHART$(R - 1,C * 2 + 2) = CHR$(191): GOTO 750 ELSE CHART$(R - 1,C * 2 + 2) = " "
730 IF LEVL$(R + 1,C) = " " THEN CHART$(R,C * 2) = CHR$(192): CHART$(R,C * 2 + 1) = LEVL$(R,C): GOTO 750
740 CHART$(R,C * 2) = CHR$(195): CHART$(R,C * 2 + 1) = LEVL$(R,C)
750 NEXT R: CHART$(R,C) = " ": NEXT C: RETURN
760 REM
770 REM RESET LAST CHARACTER ON CHAIN
780 REM
790 FOR C = MCOL TO 1 STEP -1: SW = 0: FOR R = REC TO 1 STEP -1
800 IF CHART$(R,C) = CHR$(179) AND CHART$(R + 1,C) = " " THEN CHART$(R,C) = " "
810 IF CHART$(R,C) = CHR$(179) AND CHART$(R + 1,C) = CHR$(191) THEN CHART$(R,C) = " "
820 IF CHART$(R,C) = CHR$(195) AND CHART$(R + 1,C) = " " THEN CHART$(R,C) = CHR$(192)
830 NEXT R: NEXT C
840 RETURN
850 REM
860 REM DISPLAY/PRINT CHART
870 REM
880 PRINT: INPUT "do you want to print the chart (Y/N) "; ANSWER$: ANSWER$ = LEFT$(ANSWER$,1)
890 IF ANSWER$ = "N" OR ANSWER$ = "n" THEN 1060
900 IF ANSWER$ = "Y" OR ANSWER$ = "y" THEN 940
910 PRINT: PRINT "that is an incorrect reply, please try again!": BEEP: GOTO 860
920 RETURN
930 REM
940 REM PRINT DIRECTORY CHART
950 REM
960 WIDTH "lpt1:",132: LPRINT CHR$(15)
970 TITLE$ = STRING$(61 - LEN(TITLE$) / 2,32) + TITLE$
980 LPRINT TITLE$: LPRINT
990 LPRINT CHART$(0,0); CHART$(0,1)
1000 FOR R = 1 TO REC: FOR C = 1 TO MCOL * 3
1010 IF C = 1 THEN LPRINT " ";
1020 LPRINT CHART$(R,C); " ";
1030 NEXT C: LPRINT: NEXT R
1040 RETURN
1050 REM
1060 REM DISPLAY DIRECTORY CHART
1070 REM
1080 TITLE$ = STRING$(40 - LEN(TITLE$) / 2,32) + TITLE$
1090 CLS: PRINT TITLE$: PRINT: PRINT CHART$(0,0); CHART$(0,1)
1100 FOR R = 1 TO REC: FOR C = 1 TO MCOL * 3
1110 IF C = 1 THEN PRINT " ";
1120 PRINT CHART$(R,C); " ";
1130 NEXT C: PRINT: NEXT R
1140 RETURN