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;