home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 07_08 / praxis / virkill / scandir.pas next >
Encoding:
Pascal/Delphi Source File  |  1991-05-08  |  3.6 KB  |  121 lines

  1. (* ------------------------------------------------------ *)
  2. (*                       SCANDIR.PAS                      *)
  3. (*        (c) 1991 Raimond Reichert & TOOLBOX             *)
  4. (* ------------------------------------------------------ *)
  5. UNIT ScanDir;
  6.  
  7. INTERFACE
  8.  
  9. USES Dos;
  10.  
  11. TYPE
  12.   ScanDirectoriesPtr = ^ScanDirectories;
  13.   ScanDirectories    = OBJECT
  14.     AllSize,
  15.     AllNumber,
  16.     MatchSize,
  17.     MatchNumber : LONGINT;
  18.     Mask        : STRING;
  19.  
  20.     CONSTRUCTOR Init;
  21.     PROCEDURE   SetMask(NewMask : STRING);          VIRTUAL;
  22.     PROCEDURE   Scan(StartDir : STRING);            VIRTUAL;
  23.     PROCEDURE   ScanDir(Dir : STRING);              VIRTUAL;
  24.     PROCEDURE   ReSetData;                          VIRTUAL;
  25.     PROCEDURE   DoIt(Info : SearchRec; Name : STRING);
  26.                                                     VIRTUAL;
  27.     FUNCTION    Matches(Info : SearchRec;
  28.                         Name : STRING) : BOOLEAN;   VIRTUAL;
  29.     FUNCTION    GetAllSize : LONGINT;               VIRTUAL;
  30.     FUNCTION    GetAllNumber : LONGINT;             VIRTUAL;
  31.     FUNCTION    GetMatchSize : LONGINT;             VIRTUAL;
  32.     FUNCTION    GetMatchNumber : LONGINT;           VIRTUAL;
  33.     FUNCTION    GetMask : STRING;                   VIRTUAL;
  34.     DESTRUCTOR  Done;                               VIRTUAL;
  35.   END;
  36.  
  37. IMPLEMENTATION
  38.  
  39.   CONSTRUCTOR ScanDirectories.Init;
  40.   BEGIN
  41.     AllSize   := 0;  AllNumber   := 0;
  42.     MatchSize := 0;  MatchNumber := 0;
  43.     Mask      := '*.*';
  44.   END;
  45.  
  46.   PROCEDURE ScanDirectories.SetMask(NewMask : STRING);
  47.   BEGIN  Mask := NewMask;  END;
  48.  
  49.   PROCEDURE ScanDirectories.Scan(StartDir : STRING);
  50.   VAR
  51.     Info : SearchRec;
  52.   BEGIN
  53.     ScanDir(StartDir);
  54.     FindFirst(StartDir+'\*.*', Directory, Info);
  55.     WHILE (DosError <> 18) DO BEGIN
  56.       IF (Info.Attr = Directory) AND
  57.          (Info.Name[1] <> '.') THEN BEGIN
  58.         IF Matches(Info, StartDir+'\'+Info.Name) THEN
  59.           DoIt(Info, StartDir+'\'+Info.Name);
  60.         ScanDir(StartDir+'\'+Info.Name);
  61.         Scan(StartDir+'\'+Info.Name);
  62.       END;
  63.       FindNext(Info);
  64.     END;
  65.   END;
  66.  
  67.   PROCEDURE ScanDirectories.ScanDir(Dir : STRING);
  68.   VAR
  69.     Info : SearchRec;
  70.   BEGIN
  71.     FindFirst(Dir+'\'+Mask, AnyFile-Directory, Info);
  72.     WHILE (DosError <> 18) DO BEGIN
  73.       INC(AllNumber);  INC(AllSize, Info.Size);
  74.       IF Matches(Info, Dir+'\'+Info.Name) THEN BEGIN
  75.         INC(MatchNumber);  INC(MatchSize, Info.Size);
  76.         DoIt(Info, Dir+'\'+Info.Name);
  77.       END;
  78.       FindNext(Info);
  79.     END;
  80.   END;
  81.  
  82.   PROCEDURE ScanDirectories.ReSetData;
  83.   BEGIN
  84.     AllSize   := 0;  AllNumber   := 0;
  85.     MatchSize := 0;  MatchNumber := 0;
  86.   END;
  87.  
  88.   PROCEDURE ScanDirectories.DoIt(Info : SearchRec;
  89.                                  Name : STRING);
  90.   BEGIN
  91.   END;
  92.  
  93.   FUNCTION ScanDirectories.Matches(Info : SearchRec;
  94.                                    Name : STRING) : BOOLEAN;
  95.   BEGIN
  96.     Matches := TRUE;
  97.   END;
  98.  
  99.   FUNCTION ScanDirectories.GetAllSize : LONGINT;
  100.   BEGIN  GetAllSize := AllSize;  END;
  101.  
  102.   FUNCTION ScanDirectories.GetAllNumber : LONGINT;
  103.   BEGIN  GetAllNumber := AllNumber;  END;
  104.  
  105.   FUNCTION ScanDirectories.GetMatchSize : LONGINT;
  106.   BEGIN  GetMatchSize := MatchSize;  END;
  107.  
  108.   FUNCTION ScanDirectories.GetMatchNumber : LONGINT;
  109.   BEGIN  GetMatchNumber := MatchNumber;  END;
  110.  
  111.   FUNCTION ScanDirectories.GetMask : STRING;
  112.   BEGIN  GetMask := Mask;  END;
  113.  
  114.   DESTRUCTOR ScanDirectories.Done;
  115.   BEGIN
  116.   END;
  117.  
  118. END.
  119. (* ------------------------------------------------------ *)
  120. (*                 Ende von SCANDIR.PAS                   *)
  121.