unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, FileCtrl;type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    ProgressBar1: TProgressBar;
    Memo1: TMemo;
    Button3: TButton;
    DirectoryListBox1: TDirectoryListBox;
    DirectoryListBox2: TDirectoryListBox;
    Label1: TLabel;
    DriveComboBox1: TDriveComboBox;
    DriveComboBox2: TDriveComboBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DirectoryListBox1Change(Sender: TObject);
    procedure DirectoryListBox2Change(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;var
  Form1: TForm1;
  SourFiles : TStrings;
  DestFiles : TStrings;
 // Function cmp(SourFiles:String,DestFiles:String):Bool;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var Found:integer;
        //Attr :integer;
       // SearchRec: TSearchRec;
        FindResult : WIN32_FIND_DATA;
begin
     Found := FindFirstFile('G:\*.DC?',FindResult);
     //while Found = 0 do
     //begin
     if Found > 0 then
     begin
       showmessage(FindResult.cFileName);       while FindNextFile(Found, FindResult) do
       //begin
          //if FindResult.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then
               //showmessage('<DIR>   ' + FindResult.cFileName)
          // else
               showmessage(FindResult.cFileName);
      // end;
       //FindClose(Found);
    end;
    // end;
    end;procedure SearchFiles(Path: String; Files: TStrings);
var
    Found:integer;
    Ext: String;
    SearchRec: TSearchRec;
begin
    If Path[Length(Path)] <> '\' then
       Path := Path + '\';
    Found := FindFirst(Path+'*.*', faAnyFile, SearchRec);
    while Found = 0 do
    begin
      If (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
        If (SearchRec.Attr = faDirectory) then
           SearchFiles(Path+SearchRec.Name+'\', files)
        else begin
          ext := UpperCase(ExtractFileExt(SearchRec.Name));
          If Copy(ext,2,2) = 'DC' then
             Files.Add(Path+SearchRec.Name);
         end;
      Found := FindNext(SearchRec);
    end;
     FindClose(SearchRec);
end;procedure TForm1.Button2Click(Sender: TObject);
var
   n,i,j : Integer;
   s : String;
   myStream1:TMemoryStream;
   myStream2:TMemoryStream;
begin
   SourFiles := TStringList.Create;
   DestFiles := TStringList.Create;
   myStream1:=TMemoryStream.Create;
   myStream2:=TMemoryStream.Create;
   SearchFiles(Edit1.Text, SourFiles);
   SearchFiles(Edit2.Text, DestFiles);
   If DestFiles.Count <> SourFiles.Count then
    begin ShowMessage(''); exit; end;
   ProgressBar1.Max := SourFiles.Count;
   for i := 0 to SourFiles.Count-1 do
   begin
     ProgressBar1.StepIt;
     s := ExtractFilename(SourFiles[i]);
     //s[Length(s)] := '_';
     n := -1;     for j := 0 to DestFiles.Count-1 do
       if s = ExtractFilename(DestFiles[j]) then
         begin
           n := j; break
         end;      If n >= 0 then
         begin
          Memo1.Lines.Add(SourFiles[i]);
          self.Caption:=inttostr(Memo1.Lines.Count);
          Memo1.Lines.Add(destFiles[j]);
          Sleep(50);
          {if Not Cmp(SourFiles[i], DestFiles[n]) then
            begin
              //ShowMessage('Compressed file error');
              exit
            end;}
          // SourFiles.LoadFromFile(edit1.Text);
             myStream1.LoadFromFile();
           //SourFiles.SaveToStream(myStream1);
           //showmessage(inttostr(myStream1.Size));
           //DestFiles.LoadFromFile(edit2.Text);
           //DestFiles.SaveToStream(myStream2);
           EQ := True;
         for x:= 0 to Count-1 do
          if p1[x]<>p2[x] then
              begin
                EQ := False;
                Break;
          end;   If EQ then Self.Caption:='验证成功'+inttostr(x)//??
         else Self.Caption:='验证错误'+inttostr(x);//????         end
      else ShowMessage('Not Find Dest Compressed file');
   end;
   SourFiles.Free;
   DestFiles.Free;
end;procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
  edit1.Text:=DirectoryListBox1.Directory;
end;Procedure TForm1.DirectoryListBox2Change(Sender: TObject);
begin
    edit2.Text:=DirectoryListBox2.Directory;
end;
end.