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;