home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
pcmag
/
vol8n01.arc
/
DIRTREE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1988-10-06
|
2KB
|
59 lines
PROGRAM dirtree;
{ DIRTREE.pas
Directory tree display
written by Bill Roohi, 1988
}
USES dos;
CONST nested = 10; {up to 10 nested levels}
VAR dirinfo : searchrec;
lastdir : ARRAY[1..nested] OF STRING[12];
level : Integer;
path, blank : STRING[150];
ok : Boolean;
BEGIN
ok := True; {initialize }
level := 0; {start at level 0}
FillChar(blank[1], 150, 32); {used for tabs }
blank[0] := #150;
GetDir(0, path); {get current path}
ChDir('\'); {root directory }
Findfirst('*.*', anyfile, dirinfo); {start search }
WHILE ok DO
BEGIN
WHILE (doserror = 0) AND
((dirinfo.attr <> 16) OR
(dirinfo.name = '.') OR
(dirinfo.name = '..')) DO
Findnext(dirinfo);
IF (level = 0) AND (doserror <> 0) THEN
ok := False { End of root - time to exit }
ELSE
IF (dirinfo.attr = 16) AND (doserror = 0) THEN
BEGIN {subdir found}
WriteLn(Copy(blank, 1, level*4)+
dirinfo.name); {display it }
Inc(level); {next level }
lastdir[level] := dirinfo.name; {save subdir }
ChDir(dirinfo.name); {new subdir }
Findfirst('*.*', anyfile, dirinfo); {start search}
END
ELSE
IF (level <> 0) AND (doserror <> 0) THEN
BEGIN {end of subdir }
ChDir('..'); {previous level}
Findfirst('*.*', anyfile, dirinfo);{start search }
WHILE (doserror = 0) AND
((dirinfo.attr <> 16) OR
(dirinfo.name <> lastdir[level])) DO
Findnext(dirinfo); {look for match}
Findnext(dirinfo); {skip past it }
Dec(level); {previous level}
END;
END; {WHILE ok}
ChDir(path); {to original path}
END.