All pastes #90575 Raw Edit

Gopneg

public text v1 · immutable
#90575 ·published 2006-07-17 20:29 UTC
rendered paste body
procedure TForm1.Button1Click(Sender: TObject);
var buf: array of byte;
  function FindFiles(dir: string): boolean;
  var found: integer;
      SearchRec: TSearchRec;      
      br: DWORD;
      i: integer;
      h: HFILE;
      lpReOpenBuff: TOFStruct;
      FileName: string;
      LastFile: string;
      flag: boolean;
  begin
  {$I-}
    result := false;
    Chdir(dir);
    found := findfirst('*.*', faanyfile, SearchRec);
    while found = 0 do
      begin
        if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
         if (SearchRec.Attr and fadirectory) <> 0 then if not FindFiles(SearchRec.name) then exit
                                                                                        else
             else
             begin
               GetDir(0, FileName);
               FileName := FileName + '\' + SearchRec.Name;
               h := OpenFile(PChar(FileName), lpReOpenBuff, OF_READ);//OF_SHARE_EXCLUSIVE);
               if h = HFILE_ERROR then
                  begin
                    //CloseHandle(h);
                    Memo1.Lines.Add(FileName + ' OpenFile error : ' + SyserrorMessage(GetLastError));
                    found := findnext(SearchRec);
                    continue;
                  end;

               FillChar(buf[0], Length(buf), 0);
               ReadFile(h, buf[0], Length(buf), br, nil);
               if h = 0 then
                  begin
                    Memo1.Lines.Add(FileName + ' ReadFile error : ' + SyserrorMessage(GetLastError));
                    CloseHandle(h);
                    found := findnext(SearchRec);
                    continue;
                  end;

               flag := true;
               for i := 0 to br do
                 if buf[i] <> 0 then flag := false;
               if flag then Memo1.Lines.Add(FileName);

               CloseHandle(h);
               LastFile := FileName;
             end;
         found := findnext(SearchRec);
      end;
    findclose(SearchRec);
    chdir('..');
    result := ioresult = 0;
  end;

begin
  SetLength(buf, 10);
  Memo1.Lines.Clear;
  Memo1.Lines.BeginUpdate;
  FindFiles('E:\2006.07.01\Ìîè ðèñóíêè\');
  Memo1.Lines.EndUpdate;
  SetLength(buf, 0);
end;