home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* SCANDIR.PAS *)
- (* (c) 1991 Raimond Reichert & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT ScanDir;
-
- INTERFACE
-
- USES Dos;
-
- TYPE
- ScanDirectoriesPtr = ^ScanDirectories;
- ScanDirectories = OBJECT
- AllSize,
- AllNumber,
- MatchSize,
- MatchNumber : LONGINT;
- Mask : STRING;
-
- CONSTRUCTOR Init;
- PROCEDURE SetMask(NewMask : STRING); VIRTUAL;
- PROCEDURE Scan(StartDir : STRING); VIRTUAL;
- PROCEDURE ScanDir(Dir : STRING); VIRTUAL;
- PROCEDURE ReSetData; VIRTUAL;
- PROCEDURE DoIt(Info : SearchRec; Name : STRING);
- VIRTUAL;
- FUNCTION Matches(Info : SearchRec;
- Name : STRING) : BOOLEAN; VIRTUAL;
- FUNCTION GetAllSize : LONGINT; VIRTUAL;
- FUNCTION GetAllNumber : LONGINT; VIRTUAL;
- FUNCTION GetMatchSize : LONGINT; VIRTUAL;
- FUNCTION GetMatchNumber : LONGINT; VIRTUAL;
- FUNCTION GetMask : STRING; VIRTUAL;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- IMPLEMENTATION
-
- CONSTRUCTOR ScanDirectories.Init;
- BEGIN
- AllSize := 0; AllNumber := 0;
- MatchSize := 0; MatchNumber := 0;
- Mask := '*.*';
- END;
-
- PROCEDURE ScanDirectories.SetMask(NewMask : STRING);
- BEGIN Mask := NewMask; END;
-
- PROCEDURE ScanDirectories.Scan(StartDir : STRING);
- VAR
- Info : SearchRec;
- BEGIN
- ScanDir(StartDir);
- FindFirst(StartDir+'\*.*', Directory, Info);
- WHILE (DosError <> 18) DO BEGIN
- IF (Info.Attr = Directory) AND
- (Info.Name[1] <> '.') THEN BEGIN
- IF Matches(Info, StartDir+'\'+Info.Name) THEN
- DoIt(Info, StartDir+'\'+Info.Name);
- ScanDir(StartDir+'\'+Info.Name);
- Scan(StartDir+'\'+Info.Name);
- END;
- FindNext(Info);
- END;
- END;
-
- PROCEDURE ScanDirectories.ScanDir(Dir : STRING);
- VAR
- Info : SearchRec;
- BEGIN
- FindFirst(Dir+'\'+Mask, AnyFile-Directory, Info);
- WHILE (DosError <> 18) DO BEGIN
- INC(AllNumber); INC(AllSize, Info.Size);
- IF Matches(Info, Dir+'\'+Info.Name) THEN BEGIN
- INC(MatchNumber); INC(MatchSize, Info.Size);
- DoIt(Info, Dir+'\'+Info.Name);
- END;
- FindNext(Info);
- END;
- END;
-
- PROCEDURE ScanDirectories.ReSetData;
- BEGIN
- AllSize := 0; AllNumber := 0;
- MatchSize := 0; MatchNumber := 0;
- END;
-
- PROCEDURE ScanDirectories.DoIt(Info : SearchRec;
- Name : STRING);
- BEGIN
- END;
-
- FUNCTION ScanDirectories.Matches(Info : SearchRec;
- Name : STRING) : BOOLEAN;
- BEGIN
- Matches := TRUE;
- END;
-
- FUNCTION ScanDirectories.GetAllSize : LONGINT;
- BEGIN GetAllSize := AllSize; END;
-
- FUNCTION ScanDirectories.GetAllNumber : LONGINT;
- BEGIN GetAllNumber := AllNumber; END;
-
- FUNCTION ScanDirectories.GetMatchSize : LONGINT;
- BEGIN GetMatchSize := MatchSize; END;
-
- FUNCTION ScanDirectories.GetMatchNumber : LONGINT;
- BEGIN GetMatchNumber := MatchNumber; END;
-
- FUNCTION ScanDirectories.GetMask : STRING;
- BEGIN GetMask := Mask; END;
-
- DESTRUCTOR ScanDirectories.Done;
- BEGIN
- END;
-
- END.
- (* ------------------------------------------------------ *)
- (* Ende von SCANDIR.PAS *)
-