![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рекурсивный обход папок,,, или не рекурсивный... [D5, D7, Win2k, WinXP]
Dust © (2006-04-14 11:56:00)Люди, поделитесь алгоритмом, голова не работает уже и времени нет. Нужно найти все файлы в папке и подпапках...
Dust (2006-04-14 12:43:00) [1]угу, пасибо
jack128 (2006-04-14 12:36:00) [2]б-р-р-р.. try-finally чтоли поставили бы..
я таким шабломом пользуюсь:
type
TIterateFileProc = procedure (const Filename: string;
const FFD: TWin32FindData; var Continue: boolean) of object;
function IterateFiles(StartDir: string; FileMask: string;
Callback: TIterateFileProc; Recurse: boolean = True): boolean;
var
ffd: TWIN32FindData;
ffh: THandle;
begin
Assert(Assigned(Callback));
if StartDir = '' then
raise Exception.Create('Введите директорию');
Result := True;
if StartDir[Length(StartDir)] <> '\' then
StartDir := StartDir + '\';
ffh := FindFirstFile(PChar(StartDir + FileMask), ffd);
if ffh <> INVALID_HANDLE_VALUE then
try
repeat
if not ((string(ffd.cFileName) = '.') or (string(ffd.cFileName) = '..')) then
begin
Callback(StartDir + ffd.cFileName, ffd, Result);
if not Result then Exit;
if Recurse and ((ffd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) then
begin
Result := IterateFiles(StartDir + ffd.cFileName, FileMask, Callback);
if not Result then Exit;
end;
end;
until not FindNextFile(ffh, ffd);
finally
Windows.FindClose(ffh);
end;
end;
Dmitrij_K (2006-04-14 12:19:00) [3]
Procedure ScanDir(Dir:string);
var SearchRec:TSearchRec;
begin
if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';
if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
repeat
if (SearchRec.name='.') or (SearchRec.name='..') then continue;
if (SearchRec.Attr and faDirectory)<>0 then
ScanDir(Dir+SearchRec.name) //we found Directory: "Dir+SearchRec.name"
else
Showmessage(Dir+SearchRec.name); //we found File: "Dir+SearchRec.name"
until FindNext(SearchRec)<>0;
FindClose(SearchRec);
end;
------------------
www.DRKB.ru
Kolan (2006-04-14 12:18:00) [4]FindFirst итд. Полно в нете...
Anatoly Podgoretsky (2006-04-14 12:14:00) [5]Рекурсивный