home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programming Unleashed / Delphi_Programming_Unleashed_SAMS_Publishing_1995.iso / chap30 / delallw / main.pas < prev    next >
Pascal/Delphi Source File  |  1995-03-20  |  5KB  |  182 lines

  1. unit Main;
  2.  
  3. { Contents copyright (c) 1995 by Charles Calvert }
  4. { Project Name: DELALLW }
  5.  
  6. interface
  7.  
  8. uses
  9.   SysUtils, WinTypes, WinProcs,
  10.   Messages, Classes, Graphics,
  11.   Controls, Forms, Dialogs,
  12.   StdCtrls, AllDirs, Fileiter,
  13.   Menus, Buttons, ExtCtrls,
  14.   FileCtrl;
  15.  
  16. type
  17.   TForm1 = class(TForm)
  18.     FileIterator1: TFileIterator;
  19.     MainMenu1: TMainMenu;
  20.     File1: TMenuItem;
  21.     Open1: TMenuItem;
  22.     N1: TMenuItem;
  23.     Exit1: TMenuItem;
  24.     DeleteBtn: TBitBtn;
  25.     Panel1: TPanel;
  26.     ExtBox: TListBox;
  27.     BitBtn2: TBitBtn;
  28.     DirectoryListBox1: TDirectoryListBox;
  29.     DriveComboBox1: TDriveComboBox;
  30.     OpenDelFile1: TMenuItem;
  31.     Panel2: TPanel;
  32.     DelExe: TCheckBox;
  33.     DelTilda: TCheckBox;
  34.     OpenDirSizeFile1: TMenuItem;
  35.     procedure FormDestroy(Sender: TObject);
  36.     procedure FormCreate(Sender: TObject);
  37.     procedure Exit1Click(Sender: TObject);
  38.     procedure Open1Click(Sender: TObject);
  39.     procedure BitBtn2Click(Sender: TObject);
  40.     procedure DeleteBtnClick(Sender: TObject);
  41.     procedure DriveComboBox1Change(Sender: TObject);
  42.     procedure FileIterator1FoundFile(FileName: String; SR: TSearchRec);
  43.     procedure FileIterator1ProcessDir(DirName: String);
  44.   private
  45.     StartPath: string;
  46.     FDelTilda: Boolean;
  47.     FDelExes: Boolean;
  48.     FDeleteList: TStringList;
  49.     FDirSizeList: TStringList;
  50.     FDirName: string;
  51.     FDirSize: LongInt;
  52.     FDirSizeName: string;
  53.     FDelListName: string;
  54.     FExtBoxName: string;
  55.     function LoadExtBox: Boolean;
  56.   public
  57.     { Public declarations }
  58.   end;
  59.  
  60. var
  61.   Form1: TForm1;
  62.  
  63. implementation
  64.  
  65. uses
  66.   StrBox,
  67.   UtilBox;
  68.  
  69. {$R *.DFM}
  70.  
  71. function TForm1.LoadExtBox: Boolean;
  72. begin
  73.   ExtBox.Items.LoadFromFile(FExtBoxName);
  74. end;
  75.  
  76. procedure TForm1.FormDestroy(Sender: TObject);
  77. begin
  78.   ExtBox.Items.SaveToFile(FExtBoxName);
  79.   FDeleteList.Free;
  80.   FDirSizeList.Free;
  81. end;
  82.  
  83. procedure TForm1.FormCreate(Sender: TObject);
  84. begin
  85.   FDeleteList := TStringList.Create;
  86.   FDirSizeList := TStringList.Create;
  87.   StartPath := StripLastToken(ParamStr(0), '\');
  88.   FDirSizeName := StartPath + '\dirsize.txt';
  89.   FDelListName := StartPath + '\dellist.txt';
  90.   FExtBoxName := StartPath + '\extbox.txt';
  91.   LoadExtBox;
  92. end;
  93.  
  94. procedure TForm1.Exit1Click(Sender: TObject);
  95. begin
  96.   Close;
  97. end;
  98.  
  99. procedure TForm1.Open1Click(Sender: TObject);
  100. var
  101.   SPtr: array[0..150] of char;
  102.   S: string;
  103. begin
  104.   case TMenuItem(Sender).Tag of
  105.     100: S := FExtBoxName;
  106.     101: S := FDelListName;
  107.     102: S := FDirSizeName;
  108.   end;
  109.   StrPCopy(SPtr, 'notepad.exe ' + S);
  110.   WinExecAndWait(SPtr, sw_ShowNormal);
  111.   LoadExtBox;
  112. end;
  113.  
  114. procedure TForm1.BitBtn2Click(Sender: TObject);
  115. begin
  116.   Close;
  117. end;
  118.  
  119. procedure TForm1.DeleteBtnClick(Sender: TObject);
  120. var
  121.   i: Integer;
  122.   S: string;
  123. begin
  124.   Cursor := crHourGlass;
  125.   FDelTilda := DelTilda.Checked;
  126.   FDelExes := DelExe.Checked;
  127.   s := DirectoryListBox1.Directory + '\';
  128.   if MessageDlg('Delete from: ' + S, mtConfirmation,
  129.                 [mbYes, mbNo], 0) = idNo then Exit;
  130.   FileIterator1.Run('*.*', DirectoryListBox1.Directory);
  131.   FDeleteList.SaveToFile(FDelListName);
  132.   FDirSizeList.Add(FDirName + ': ' + IntToStr(FDirSize));
  133.   DeleteFile(FDirSizeName);
  134.   FDirSizeList.SaveToFile(FDirSizeName);
  135.   for i := 0 to FDeleteList.Count - 1 do
  136.     DeleteFile(FDeleteList.Strings[i]);
  137.   Cursor := crDefault;
  138. end;
  139.  
  140. procedure TForm1.DriveComboBox1Change(Sender: TObject);
  141. begin
  142.   DirectoryListBox1.Drive := DriveComboBox1.Drive;
  143.   DirectoryListBox1.Directory := '';
  144. end;
  145.  
  146. procedure TForm1.FileIterator1FoundFile(FileName: String; SR: TSearchRec);
  147. var
  148.   S: string;
  149.   i: Integer;
  150.   AddToDirSize: Boolean;
  151. begin
  152.   AddToDirSize := False;
  153.   S := UpperCase(ExtractFileExt(FileName));
  154.   for i := 0 to ExtBox.Items.Count - 1 do begin
  155.     if (S = '.EXE') and (not FDelExes) then begin
  156.       AddToDirSize := True;
  157.       Continue;
  158.     end;
  159.     if S = UpperCase(ExtBox.Items.Strings[i]) then begin
  160.       FDeleteList.Add(FileName);
  161.       Continue;
  162.     end;
  163.     if not FDelTilda then
  164.       AddToDirSize := True
  165.     else if S[2] = '~' then begin
  166.       FDeleteList.Add(FileName);
  167.       Continue;
  168.     end;
  169.     AddToDirSize := True;
  170.   end;
  171.   if AddToDirSize then FDirSize := FDirSize + SR.Size;
  172. end;
  173.  
  174. procedure TForm1.FileIterator1ProcessDir(DirName: String);
  175. begin
  176.   FDirSizeList.Add(FDirName + ': ' + IntToStr(FDirSize));
  177.   FDirName := DirName;
  178.   FDirSize := 0;
  179. end;
  180.  
  181. end.
  182.