Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Рекурсивный обход папок,,, или не рекурсивный...   Найти похожие ветки 

 
Dust ©   (2006-04-14 11:56) [0]

Люди, поделитесь алгоритмом, голова не работает уже и времени нет. Нужно найти все файлы в папке и подпапках...


 
Anatoly Podgoretsky ©   (2006-04-14 12:14) [1]

Рекурсивный


 
Kolan ©   (2006-04-14 12:18) [2]

FindFirst итд. Полно в нете...


 
Dmitrij_K   (2006-04-14 12:19) [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


 
jack128 ©   (2006-04-14 12:36) [4]

б-р-р-р..  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;


 
Dust ©   (2006-04-14 12:43) [5]

угу, пасибо



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
2-1145019564
KygECHuK
2006-04-14 16:59
2006.04.30
как отменить Drag &amp; Drop


2-1144925590
Dest81
2006-04-13 14:53
2006.04.30
Контрольная сума


1-1143197549
Muhan_
2006-03-24 13:52
2006.04.30
Как загнать текст в буфер программно?


6-1137084456
bloodman
2006-01-12 19:47
2006.04.30
Перечислить сет. интерфейсы, Как?


2-1144910064
fast2
2006-04-13 10:34
2006.04.30
Как записать на паскале (в Делфи) выражение: