Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.013 c
2-1144921222
Der Nechk@ssoff
2006-04-13 13:40
2006.04.30
Приложение к основной программе


3-1141391413
ANB
2006-03-03 16:10
2006.04.30
Как настроить ядро BTrieve ?


1-1143132806
lookin
2006-03-23 19:53
2006.04.30
В MainMenu пробежаться по всем MenuItem любой степени вложенности


2-1144834941
Acidlex
2006-04-12 13:42
2006.04.30
dbf


2-1144814057
Novi4ek
2006-04-12 07:54
2006.04.30
Доброго времени суток, Уважаемые! Передача файла TCP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский